No jQuery, como uso um seletor para acessar todos, exceto o primeiro de um elemento? Portanto, no código a seguir, apenas o segundo e o terceiro elemento seriam acessados. Eu sei que posso acessá-los manualmente, mas pode haver qualquer número de elementos, portanto, isso não é possível. Obrigado.
<div class='test'></div>
<div class='test'></div>
<div class='test'></div>
jquery
jquery-selectors
usertest
fonte
fonte
Respostas:
ou:
ou:
ou:
ou: (conforme comentário de @Jordan Lev):
e assim por diante.
Vejo:
fonte
$("li").not(":eq(0)")
parece bom.$("div.test:first").siblings().hide()
. Achei útil começar com o primeiro elemento e depois ocultar todos os seus irmãos, mesmo que não tenham sido encontrados com um seletor comum.$("div.test").slice(1).hide();
olhares mais perdoando em caso de seleção vazia ...Devido à maneira como os seletores do jQuery são avaliados da direita para a esquerda , a legibilidade
li:not(:first)
é mais lenta nessa avaliação.Uma solução igualmente rápida e fácil de ler está usando a versão da função
.not(":first")
:por exemplo
JSPerf: http://jsperf.com/fastest-way-to-select-all-expect-the-first-one/6
Isso é apenas alguns pontos percentuais mais lentos do que
slice(1)
, mas é muito legível como "Quero tudo, exceto o primeiro".fonte
Minha resposta está focada em um caso extenso derivado do exposto no topo.
Suponha que você tenha um grupo de elementos dos quais deseja ocultar os elementos filhos, exceto primeiro. Como um exemplo:
Queremos ocultar todos os
.child
elementos em cada grupo. Portanto, isso não ajudará porque ocultará todos os.child
elementos, excetovisible#1
:A solução (neste caso estendido) será:
fonte
fonte