هل يوجد محدد jQuery لإنجاز هذه المهمة؟
-
01-10-2019 - |
سؤال
لدي مقتطفات 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
});
المحلول 4
حسنًا ، إليك نسخة معدلة من باديلالحل الذي يتصرف بعض الشيء بشكل مختلف
var lastA = null;
$('.a, .b').each(function() {
if($(this).hasClass('a'))
{
lastA = $(this);
}
else if(lastA)
{
doStuff(lastA,this); //doStuff(a,b)
lastA = null;
}
});
نصائح أخرى
هل يمكنك تجربة هذا لمعرفة ما إذا كان يناسب قضيتك؟
$(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;
}
});
});
يعتبر...
فهمتها!
var both = $('.a, .b');
$('.a').each(function() {
var nearestB = both.slice(both.index(this))
.filter('.b')
.first();
//do stuff
});
كيف تقرر أي .a
لتحديد؟ هل يوجد .b
إلى الأبد .a
؟ هل تحلق فوق كل منها؟ يمكنك استخدام فهرس .a
و ببساطة حدد المقابلة .b
.
$(".a").each(function(){
var index = $(".a").index(this);
var theB = $(".b").get(index);
});
$("div.a").nextAll("div.b")
هل هذا ممكن؟
لا تنتمي إلى StackOverflow