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 traverser à partir du .current_sub
, trouver le précédent le plus proche .par_cat
et faire des choses dessus.
.find("li.par_cat")
renvoie la charge entière de .par_cat
(j'en ai environ 30 sur la page). J'ai besoin de cibler le seul.
J'apprécierais vraiment tous les conseils :)
jquery
html
traversal
tree-traversal
Daulex
la source
la source
Réponses:
Essayer:
Testé avec votre balisage:
remplira le précédent le plus proche
li.par_cat
avec "woohoo".la source
:first
travaillez sur une liste d'éléments retournés qui commence le plus près de l'objet sélectionné (par opposition à de haut en bas par rapport à la page)?:first
sélecteur CSS qui sélectionne le premier élément du DOM (par exemplediv.red:first
sélectionnera le premier DIV rouge dans le DOM ) n'est-ce pas jQuery analysé le sélecteur différemment?Essayer
la source
L'utilisation de prevUntil () nous permettra d'obtenir un frère distant sans avoir à tout obtenir. J'avais un ensemble particulièrement long qui était trop gourmand en CPU en utilisant prevAll ().
Cela obtient le premier frère précédent s'il correspond, sinon il obtient le frère précédant celui qui correspond, donc nous en sauvegardons un de plus avec prev () pour obtenir l'élément souhaité.
la source
Je pense que toutes les réponses manquent de quelque chose. Je préfère utiliser quelque chose comme ça
Vous évite de ne pas ajouter: d'abord dans le sélecteur et est plus facile à lire et à comprendre. La méthode prevUntil () a également de meilleures performances que l'utilisation de prevAll ()
la source
Vous pouvez suivre ce code:
Vous pouvez vous en faire une idée.
la source