86 votes

Sélectionner tous les éléments enfants sauf le premier

Dites que j'ai ce qui suit:

 <ul>
 <li>First item</li>
 <li>Second item</li>
 <li>Third item</li>
</ul>
 

Comment sélectionnerais-je tous les éléments enfants après le premier utilisant jQuery? Donc, je peux réaliser quelque chose comme:

 <ul>
 <li>First item</li>
 <li class="something">Second item</li>
 <li class="something">Third item</li>
</ul>
 

144voto

twernt Points 7182

Vous devriez pouvoir utiliser les sélecteurs "not" et "first child".

 $("li:not(:first-child)").addClass("something");
 

http://docs.jquery.com/Selectors/not

http://docs.jquery.com/Selectors/firstChild

38voto

twernt Points 7182

D'après mon analyse totalement non scientifique des quatre méthodes présentées ici, il semble qu'il n'y ait pas beaucoup de différence de vitesse entre elles. J'ai parcouru chaque page sur une page contenant une série de listes non ordonnées de différentes longueurs et les ai synchronisées à l'aide du profileur Firebug.

 $("li").slice(1).addClass("something");
 

Durée moyenne: 5.322ms

 $("li:gt(0)").addClass("something");
 

Durée moyenne: 5.590ms

 $("li:not(:first-child)").addClass("something");
 

Durée moyenne: 6.084ms

 $("ul li+li").addClass("something");
 

Durée moyenne: 7.831ms

13voto

insin Points 19509

http://docs.jquery.com/Traversing/slice

 $("li").slice(1).addClass("something");
 

9voto

Sergey Ilinsky Points 16803

Une requête plus élégante (sélectionnez tous les éléments li précédés d'un élément li):

$('ul li+li')

3voto

Pat Points 18943

Cela devrait marcher

 $('ul :not(:first-child)').addClass('something');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X