我有这种格式的UL
<UL>
<LI>ABC</LI>
<LI>DEF</LI>
<LI>GHI</LI>
<LI>JKL</LI>
<LI><a class='header'>MNO</a></LI>
<LI>PQR</LI>
<LI>DEF</LI>
<LI>GHI</LI>
<LI>JKL</LI>
<LI><a class='header'>AHP</a></LI>
<LI>GHI</LI>
<LI>JKL</LI>
</UL>
我有一个包含第二个 li 实例的变量。
var l=$('ul li:eq(1)');
但我需要找到下一个li的索引,其中“anchor child”带有“header”类。我是否知道找到该指数的最佳方法。
答案 0 :(得分:3)
使用nextAll()
检索以下兄弟,使用:has
选择器进行过滤,然后使用first()
,如果您只想要第一次匹配。
l.nextAll(':has(.header)').first();
当然,如果需要,您可以在过滤器中更加具体 - li:has(a.header)
。
答案 1 :(得分:2)
您可以使用nextAll
的组合来获取兄弟姐妹,filter
可以找到包含所需a
的内容。试试这个:
var $li = $('ul li:eq(1)');
$li.nextAll('li').filter(function() {
return $(this).find('.header').length > 0;
}).first().addClass('foo');