153 votes

jquery trouver le frère précédent le plus proche avec la classe

voici le html approximatif avec lequel je travaille:

 <li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li> // this is the single element I need to select
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub"></li> // this is where I need to start searching
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
 

J'ai besoin de parcourir les .current_sub , trouver le précédent précédent le plus proche .par_cat et faire des choses pour cela.

.find("li.par_cat") renvoie la charge totale de .par_cat (j'ai environ 30 sur la page). J'ai besoin de cibler l'unique.

J'apprécierais vraiment des conseils :)

269voto

karim79 Points 178055

Essayez :

Testé avec votre balisage :

comblera jusqu'à la plus proche précédent `` avec « woohoo ».

16voto

Ed Woodcock Points 5170

Essayez

$('li.current_sub').prev('.par_cat').[do stuff];

14voto

eprothro Points 357

Utiliser prevUntil () nous permettra d’avoir un frère éloigné sans avoir à tout avoir. J'avais un ensemble particulièrement long qui nécessitait beaucoup de temps processeur en utilisant prevAll ().

 var category = $('li.current_sub').prev('li.par_cat');
if (category.length == 0){
  category = $('li.current_sub').prevUntil('li.par_cat').last().prev();
}
category.show();
 

Cela obtient le premier frère précédent s'il correspond, sinon, le frère précédent celui qui correspond, nous en sauvegardons donc un de plus avec prev () pour obtenir l'élément souhaité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X