我有这4个HTML代码段:
<div class="a">...</div>
<div class="b">...</div> <!--selected-->
<div class="b">...</div> <!--not selected-->
<div class="a">...</div>
<div>
<div class="b">...</div> <!--selected-->
</div>
<div class="b">...</div> <!--not selected-->
<div>
<div class="a">...</div>
</div>
<div>
<div class="b">...</div> <!--selected-->
</div>
<div class="b">...</div> <!--not selected-->
<div class="a">...</div>
<div>...</div>
<div class="b">...</div> <!--selected-->
<div>...</div>
<div class="b">...</div> <!--not selected-->
<div>...</div>
<div class="b">...</div> <!--not selected-->
我如何使用jQuery为任何给定的.b
元素选择下一个.a
元素,而不管嵌套?
我想要这样的事情:
$('.a').each(function() {
var nearestB = $(this)./*Something epically wonderful here*/;
//do other stuff here
});
答案 0 :(得分:3)
你可以试试看它是否适合你的情况吗?
$(document).ready(function () {
var isA = false;
$('div.a, div.b').each(function () {
if ($(this).attr('class') == "a")
isA = true;
if ($(this).attr('class') == "b" && isA) {
$(this).css("background", "yellow");
isA = false;
}
});
});
...问候
答案 1 :(得分:3)
知道了!
var both = $('.a, .b');
$('.a').each(function() {
var nearestB = both.slice(both.index(this))
.filter('.b')
.first();
//do stuff
});
答案 2 :(得分:2)
您如何决定选择哪个.a
?永远有.b
.a
?你在每个上面循环吗?您可以使用.a
的索引,只需选择相应的.b
。
$(".a").each(function(){
var index = $(".a").index(this);
var theB = $(".b").get(index);
});
答案 3 :(得分:1)
好的,这是Padel解决方案的修改版本,其行为略有
var lastA = null;
$('.a, .b').each(function() {
if($(this).hasClass('a'))
{
lastA = $(this);
}
else if(lastA)
{
doStuff(lastA,this); //doStuff(a,b)
lastA = null;
}
});
答案 4 :(得分:0)
$("div.a").nextAll("div.b")
这有用吗?