C'è un selettore jQuery per realizzare questo compito?
-
01-10-2019 - |
Domanda
Ho questi frammenti 4 HTML:
-
Fratelli:
<div class="a">...</div> <div class="b">...</div> <!--selected--> <div class="b">...</div> <!--not selected-->
-
Wrapped 1:
<div class="a">...</div> <div> <div class="b">...</div> <!--selected--> </div> <div class="b">...</div> <!--not selected-->
-
Avvolto 2:
<div> <div class="a">...</div> </div> <div> <div class="b">...</div> <!--selected--> </div> <div class="b">...</div> <!--not selected-->
-
Separato:
<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-->
Come posso, con jQuery, selezionare l'elemento .b
successivo per ogni elemento .a
, a prescindere dalla nidificazione?
Voglio qualcosa di simile:
$('.a').each(function() {
var nearestB = $(this)./*Something epically wonderful here*/;
//do other stuff here
});
Soluzione 4
Ok, ecco una versione modificata di Padel 's soluzione, che si comporta un po' diverso
var lastA = null;
$('.a, .b').each(function() {
if($(this).hasClass('a'))
{
lastA = $(this);
}
else if(lastA)
{
doStuff(lastA,this); //doStuff(a,b)
lastA = null;
}
});
Altri suggerimenti
Si può provare questo per vedere se si adatta al vostro caso?
$(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;
}
});
});
Saluti ...
Ci sono!
var both = $('.a, .b');
$('.a').each(function() {
var nearestB = both.slice(both.index(this))
.filter('.b')
.first();
//do stuff
});
Come stai decidendo che .a
per selezionare? Esiste un .b
per .a
mai? Stai ciclare su ogni? È possibile utilizzare l'indice della .a
e semplicemente selezionare il .b
corrispondente.
$(".a").each(function(){
var index = $(".a").index(this);
var theB = $(".b").get(index);
});
$("div.a").nextAll("div.b")
Fa questo lavoro?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow