136 votes

jQuery : Compter le nombre d'éléments d'une liste ?

J'ai une liste qui est générée à partir d'un code côté serveur. Avant d'y ajouter des éléments supplémentaires avec jQuery, je dois déterminer combien d'éléments s'y trouvent déjà.

<ul id="mylist">
    <li>Element 1</li>
    <li>Element 2</li>
</ul>

228voto

cletus Points 276888

Essayez :

$("#mylist li").length

Simple curiosité : pourquoi avez-vous besoin de connaître la taille ? Vous ne pouvez pas simplement utiliser :

$("#mylist").append("<li>New list item</li>");

?

3 votes

J'utilise l'ajout pour ajouter les nouveaux éléments, mais j'ai une limite sur le nombre d'éléments qui peuvent être dans la liste, dans cet état l'utilisateur peut toujours ajouter jusqu'à un maximum de 4 éléments, mais 2 pourraient provenir de l'état précédent :)

35 votes

Notez que les documents de jQyery recommandent l'utilisation de .length sur .size() pour éviter la surcharge d'un appel de fonction. api.jquery.com/size

4 votes

size() a été déprécié dans jquery 1.8 et il est dit d'utiliser longueur() maintenant.

51voto

Nick Allen Points 4813
var listItems = $("#myList").children();

var count = listItems.length;

Bien sûr, vous pouvez condenser cela avec

var count = $("#myList").children().length;

Pour plus d'aide avec jQuery, http://docs.jquery.com/Main_Page est un bon point de départ.

5 votes

Juste pour être sûr, faites $("#myList").children("li").length ; Si jamais vous ajoutez d'autres éléments dans la liste pour une raison quelconque, vous n'oublierez pas cette petite ligne de code.

10voto

Alex Nguyen Points 147

Vous obtenez le même résultat en appelant la méthode .size() ou la propriété .length, mais la propriété .length est préférable car elle n'a pas la surcharge d'un appel de fonction. Donc la meilleure solution :

$("#mylist li").length

4voto

Andrew Barrett Points 9848

Je pense que ça devrait le faire :

var ct = $('#mylist').children().size();

4voto

ROARSTAR Points 39

Et bien sûr les suivantes :

var count = $("#myList").children().length;

peut se résumer à : (en supprimant le 'var' qui n'est pas nécessaire pour définir une variable)

count = $("#myList").children().length;

mais celle-ci est plus propre :

count = $("#mylist li").size();

2 votes

Cette méthode ne compte-t-elle pas également les balises li dans les éléments ul enfants de l'ul supérieur ?

2 votes

Dire "'var' n'est pas nécessaire pour définir une variable" est trop simpliste. Si vous n'utilisez pas 'var', toutes vos variables deviendront globales. Voir stackoverflow.com/questions/1470488/

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