Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eai pessoal!
Gostaria de saber como acessar determinados itens de uma lista não ordenada, mas não utilizando :eq(x), por exemplo:
<ul class="menu">
<li>1</li>
<li>2
<ul>
<li>2.1</li>
<li>2.2
<ul>
<li>2.2.1</li>
<li>2.2.2
<ul>
<li>2.2.2.1</li>
<li>2.2.2.2</li>
<li>2.2.2.3</li>
</ul>
</li>
<li>2.2.3</li>
</ul>
</li>
<li>2.3</li>
</ul>
</li>
<li>3</li>
</ul>
Com base na lista acima quero acessar os primeiros e ultimos itens, que no caso são: 2.2.1 - 2.2.3 e 2.2.2.1 - 2.2.2.3
Obs: menos da primeira sublista: 2.1, 2.2 e 2.3
Utilizando o seguinte código: $("ul.menu li ul li:has(ul)").find("a:first").addClass("sub"), eu consigo adicionar a classe sub em todos os itens que pussuem sublista, podendo ser, por exemplo, uma seta indicando pro usuário que existe outro nível.
Espero ter explicado corretamente(rs) e agradeço a ajuda!
Entendi sigmus, funcionou sim!
Valeu, abraço!
Deives,
Montei um exemplo aqui: http://javascript.singuska.com/exemplos/deives
Este exemplo só funciona com jQuery 1.4 porque utilizei o novo método .has(). Não vai funcionar se você tiver dois textos iguais dentro de LIs diferentes. Com ele você pode mudar a raiz da árvore alterando $('.menu ul li ul') e alterar o que a função realiza. No exemplo ela muda uma propriedade CSS liElement.css('color', 'red') mas você pode fazer qualquer coisa, como adicionar uma classe CSS.
É isso aí, espero que funcione.
Um abraço...
Flávio
http://javascript.singuska.com