117

How can i find the next element by class.

i tried with $(obj).next('.class'); but this returns classes only in $(obj) parent. I need to take the next element anywhere throughout the code by class name. Because my code looks like

<table>
<tr><td><div class="class">First</div></td></tr>
<tr><td><div class="class">Second</div></td></tr>
</table>

Is this possible?

4

5 回答 5

169

在这种情况下,您需要转到<tr> then use .next(),如下所示:

$(obj).closest('tr').next().find('.class');

或者,如果中间可能有没有.class内部的行,您可以使用.nextAll(),如下所示:

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');
于 2010-09-08T22:33:04.857 回答
28

要查找具有相同类的下一个元素:

$(".class").eq( $(".class").index( $(element) ) + 1 )
于 2016-09-14T02:47:47.433 回答
17

在这种情况下,您不能使用 next(),如果您查看它说 的文档
: Next() 获取 匹配元素集中每个元素的紧随其后的兄弟。 如果提供了选择器,它将检索与选择器匹配的下一个兄弟。

所以如果第二个 DIV 在同一个 TD 中,那么你可以编码:


// Won't work in your case
$(obj).next().filter('.class');

但既然不是,我看不出使用 next() 的意义。您可以改为编码:

$(obj).parents('table').find('.class')

于 2010-09-08T17:11:21.150 回答
1

给定第一个选择器:SelectorA,您可以找到SelectorB的下一个匹配项,如下所示:

使用鼠标悬停更改边框的示例:

$("SelectorA").on("mouseover", function() {
    var i = $(this).find("SelectorB")[0];
    $(i).css({"border" : "1px"});
    });
}

更改边框的一般使用示例:

var i = $("SelectorA").find("SelectorB")[0];
$(i).css({"border" : "1px"});
于 2020-11-14T15:07:04.260 回答
0

按标签名称查找下一个元素

  function findNext(start, tag)
    {
      while(start.nodeName !== tag)
      {
            start = start.nextElementSibling;
      }
      return start;
    }
于 2021-08-22T07:28:47.703 回答