aqui está o html áspero com o qual trabalho:
<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>
Eu preciso sair do .current_sub
, encontrar o anterior mais próximo .par_cat
e fazer coisas com ele.
.find("li.par_cat")
retorna toda a carga de .par_cat
(eu tenho cerca de 30 na página). Eu preciso direcionar o único.
Realmente apreciaria algumas dicas :)
jquery
html
traversal
tree-traversal
daulex
fonte
fonte
Respostas:
Experimentar:
Testei com sua marcação:
irá preencher o anterior mais próximo
li.par_cat
com "woohoo".fonte
:first
está trabalhando em uma lista de elementos retornados que iniciam o mais próximo ao objeto selecionado (em vez de cima para baixo em relação à página)?:first
Um seletor de CSS não seleciona o primeiro elemento no DOM (por exemplodiv.red:first
, selecionará o primeiro DIV vermelho no DOM ) o jQuery analisou o seletor de maneira diferente?Experimentar
fonte
Usar prevUntil () nos permitirá obter um irmão distante sem precisar obter tudo. Eu tinha um conjunto particularmente longo que consumia muita CPU usando prevAll ().
Isso obtém o primeiro irmão anterior, se corresponder, caso contrário, obtém o irmão anterior àquele que corresponde, portanto, apenas fazemos backup de mais um com prev () para obter o elemento desejado.
fonte
Eu acho que todas as respostas estão faltando alguma coisa. Eu prefiro usar algo assim
Economiza você não adicionando: primeiro dentro do seletor e é mais fácil de ler e entender. O método prevUntil () também tem um desempenho melhor do que o uso de prevAll ()
fonte
Você pode seguir este código:
Você pode ter uma idéia disso.
fonte