Aquí está el html aproximado con el que trabajo:
<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>
Necesito atravesar desde el .current_sub
, encontrar el anterior más cercano .par_cat
y hacerle cosas.
.find("li.par_cat")
devuelve toda la carga de .par_cat
(Tengo alrededor de 30 en la página). Necesito apuntar al soltero.
Realmente agradecería cualquier consejo :)
jquery
html
traversal
tree-traversal
daulex
fuente
fuente
Respuestas:
Tratar:
Probado con su marcado:
llenará el anterior más cercano
li.par_cat
con "woohoo".fuente
:first
está trabajando en una lista de elementos devueltos que comienza más cerca del objeto seleccionado (en lugar de arriba a abajo en relación con la página)?:first
un selector CSS que selecciona el primer elemento en DOM (por ejemplodiv.red:first
, seleccionará el primer DIV rojo en el DOM ) jQuery analizó el selector de manera diferente?Tratar
fuente
El uso de prevUntil () nos permitirá obtener un hermano distante sin tener que obtener todo. Tenía un conjunto particularmente largo que era demasiado intensivo de CPU usando prevAll ().
Esto obtiene el primer hermano anterior si coincide, de lo contrario, obtiene el hermano anterior al que coincide, por lo que solo hacemos una copia de seguridad más con prev () para obtener el elemento deseado.
fuente
Creo que a todas las respuestas les falta algo. Prefiero usar algo como esto
Le ahorra no agregar: primero dentro del selector y es más fácil de leer y comprender. El método prevUntil () también tiene un mejor rendimiento en lugar de usar prevAll ()
fuente
Puedes seguir este código:
Puedes hacerte una idea de esto.
fuente