代码之家  ›  专栏  ›  技术社区  ›  Chen Li Yong

使用jQuery在公共“根”中选择另一个div

  •  0
  • Chen Li Yong  · 技术社区  · 10 年前

    我有这样的结构:

    <div class="root">
        <div class="image">
            <div class="price">$100</div>
        </div>
        <div class="productinfo">
            <div class="title" id="title1">Banana</div>
        </div>
    </div>
    
    <div class="root">
        <div class="image">
            <div class="price">$14</div>
        </div>
        <div class="productinfo">
            <div class="title" id="title2">Spoon</div>
        </div>
    </div>
    

    现在,我需要知道带有类的div的宽度 price 有内容的 $100 而不是最终得到div的宽度 $14 ; 但是 代码需要从 $("#title1") 我该怎么做?或者,我应该如何选择元素的父级,然后选择具有该父级的特定类的子级?谢谢

    3 回复  |  直到 10 年前
        1
  •  5
  •   empiric    10 年前

    您可以使用函数 closest() 为此:

    $("#title1").closest('.root').find('.price').text();
    

    Demo

    第二种可能性是使用 parents() -功能:

    $("#title1").parents('.root').find('.price').text();
    

    Demo 2

    参考

    .closest()

    .parents()

        2
  •  4
  •   Salman Arshad    10 年前

    如果您不知道“通用”父类,可以使用以下更通用的方法:

    $("#title1").closest(":has(.price)").find(".price")
    

    例子:

    $(function() {
      $(".title").click(function() {
        $(this).closest(":has(.price)").find(".price").hide().fadeIn("slow");
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <p>Click on labels to highlight corresponding price</p>
    
    <div>
      <div class="image">
        <div class="price">$100</div>
      </div>
      <div class="productinfo">
        <div class="title" id="title1">Banana</div>
      </div>
    </div>
    
    <div>
      <div class="image">
        <div class="price">$14</div>
      </div>
      <div class="productinfo">
        <div class="title" id="title2">Spoon</div>
      </div>
    </div>
        3
  •  2
  •   Pranav Bilurkar    10 年前

    此外,您可以使用 html()

    这样地:

    var price = $("#title1").closest('.root').find('.price').html();
    alert(price);