jQuery count éléments enfants


324

<div id="selected">
  <ul>
    <li>29</li>
    <li>16</li>
    <li>5</li>
    <li>8</li>
    <li>10</li>
    <li>7</li>
  </ul>
</div>

Je veux compter le nombre total d' <li>éléments dans <div id="selected"></div>. Comment est-ce possible en utilisant jQuery .children([selector])?



1
En JS pur, la réponse de @ Mo. est encore assez faible, mais utilisezelement.childelementCount
Charles L.

Réponses:



30
$("#selected > ul > li").size()

ou:

$("#selected > ul > li").length

10
Juste une note .size () a été déprécié au profit de .length
Eric Kigathi

18

le plus rapide:

$("div#selected ul li").length

2
Ce n'est pas le plus rapide, en fait vous avez ralenti en ajoutant divlà-bas :)
Nick Craver

1
Cela dépend vraiment du navigateur que vous utilisez. Dans de nombreux navigateurs modernes, l'ajout de l'élément utilise findByElement avant de rechercher par id ou classe, ce qui est plus lent. Bientôt, ce sera un point discutable dans les deux cas, car toutes les recherches DOM seront effectuées à l'aide d'une fonction native. Dans tous les cas, un simple getElementById ('sélectionné') ou $ ('# sélectionné') serait plus rapide à ce stade.
Alex K

14
var length = $('#selected ul').children('li').length
// or the same:
var length = $('#selected ul > li').length

Vous pourriez probablement aussi omettre lidans le sélecteur pour enfants.

Tu vois .length.


13

Vous pouvez utiliser JavaScript (pas besoin de jQuery)

document.querySelectorAll('#selected li').length;


4

C'est tout simplement possible avec childElementCountdu javascript pur

var countItems = document.getElementsByTagName("ul")[0].childElementCount;
console.log(countItems);
<div id="selected">
  <ul>
    <li>29</li>
    <li>16</li>
    <li>5</li>
    <li>8</li>
    <li>10</li>
    <li>7</li>
  </ul>
</div>


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.