Есть ли селектор jQuery для выполнения этой задачи?
У меня есть эти 4 фрагмента HTML:
-
Братья, сестры:
<div class="a">...</div>
<div class="b">...</div> <!--selected-->
<div class="b">...</div> <!--not selected-->
-
Обернуто 1:
<div class="a">...</div>
<div>
<div class="b">...</div> <!--selected-->
</div>
<div class="b">...</div> <!--not selected-->
-
Обернуто 2:
<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
});
Ответы
Ответ 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;
}
});
Ответ 2
Можете ли вы попробовать это, чтобы узнать, подходит ли это вашему делу?
$(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;
}
});
});
С уважением...
Ответ 3
Получил это!
var both = $('.a, .b');
$('.a').each(function() {
var nearestB = both.slice(both.index(this))
.filter('.b')
.first();
//do stuff
});
Ответ 4
Как вы решаете выбрать .a
? Есть ли .b
навсегда .a
? Вы перебираете каждый из них? Вы можете использовать индекс .a
и просто выбрать соответствующий .b
.
$(".a").each(function(){
var index = $(".a").index(this);
var theB = $(".b").get(index);
});
Ответ 5
$("div.a").nextAll("div.b")
Это работает?