代码之家  ›  专栏  ›  技术社区  ›  Alex

jQuery-从上面查找具有特定类的第一个元素,但不在另一个元素之前

  •  4
  • Alex  · 技术社区  · 14 年前

    HTML如下所示:

    <li class="divider">
      <div>
        ...(maybe more divs)...      
          <div class="content">
             ...(maybe more divs)...
             <a href="#" class="link">LINK</a>
    
    ...
    

    请注意,我有多个这样的列表,其中一些列表中可能缺少div.content,因此我只想选择当前块中存在的div(li.divider)。

    $link.parent().parent().find('content') 但它在某些情况下失败了,因为这两个元素之间的元素数可能会改变。。。

    3 回复  |  直到 14 年前
        1
  •  6
  •   user113716    14 年前

    如果它们不是嵌套的,您应该可以执行以下操作:

    $('a.link').click(function() {
        $(this).closest('div.content');
    });
    

    $('a.link').click(function() {
        $(this).parents('div.content:first');
    });
    

    如果它们是嵌套的,则可能需要执行以下操作:

    $('a.link').click(function() {
        $(this).closest('li.divider').find('div.content');
    });
    

    …所以如果有筑巢,而没有 div.content 在当前版本中,您不会选择更遥远的 部门内容 祖先。

        2
  •  0
  •   Swift    14 年前

    $link.parent(".content") ?

        3
  •  0
  •   Josh Stodola    14 年前

    使用 closest 选择器。。。

    var parentContent = $(this).closest("div.content");
    
    if(parentContent.length > 0) {
      alert("DIV was found!");
    }