嗨,我必须找到" findme"在特定div之后的dom结构中的div 并使用一个Jquery在div之后找到第一个实例。 以下可能是dom结构:
ex1:
<div class="abc"></div>
<div class="findme"></div>
ex2:
<div class="abc"></div>
<div>
<div class="findme"></div>
</div>
ex3:
<div>
<div class="abc"></div>
</div>
<div>
<div class="findme"></div>
</div>
ex4:
<div>
<div class="abc"></div>
</div>
<div class="findme"></div>
上面是dom结构的一些例子,其中我想找到&#34; findme&#34;第一个div
&#34; abc&#34; div使用jquery
我尝试使用after(),closest().nextAll().first()
但我没有得到与上述所有示例匹配的查询。
所以任何人都可以帮助我找到第一个元素(&#34; finme&#34;)&#34; abc&#34; div
我想找到下一个&#34; findme&#34;在&#34; abc&#34;之后完成dom div和第一次出现&#34; abc&#34;以上div是dom可以的一些例子
答案 0 :(得分:1)
我能找到让所有情况都适用的唯一方法是使用过滤器顺序遍历整个DOM:
var foundAbc;
$('*').filter(function() {
if ($(this).hasClass('abc')) {
foundAbc = true;
} else {
if (foundAbc && $(this).hasClass('findme')) {
foundAbc = false;
return true;
}
}
return false;
}).css('color','red');
JSFiddle: https://jsfiddle.net/TrueBlueAussie/LnLf79od/2/
如果要使其可重用,可以将此行为包装在jQuery扩展方法中。
$.findNext = function(selector1, selector2) {
var foundAbc;
return $('*').filter(function() {
if ($(this).is(selector1)) {
foundAbc = true;
} else {
if (foundAbc && $(this).is(selector2)) {
foundAbc = false;
return true;
}
}
return false;
});
}
并使用如下:
$.findNext('.abc', '.findme').css('color', 'red');