Elementy potomne jQuery count

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>

Chcę policzyć całkowitą liczbę <li>elementów <div id="selected"></div>. Jak to możliwe przy użyciu jQuery .children([selector])?

gautamlakum
źródło
1
W czystym JS odpowiedź @ Mo. jest nadal trochę niska, ale użyjelement.childelementCount
Charles L.

Odpowiedzi:

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

lub:

$("#selected > ul > li").length
bcosca
źródło
10
Tylko uwaga .size () została uznana za przestarzałą na rzecz .length
Eric Kigathi
18

najszybszy:

$("div#selected ul li").length
Ali Tarhini
źródło
2
To nie jest najszybszy, w rzeczywistości spowolniłeś go, dodając divtam :)
Nick Craver
1
To zależy od używanej przeglądarki. W wielu nowoczesnych przeglądarkach dodanie elementu korzysta z findByElement przed znalezieniem według identyfikatora lub klasy, co jest wolniejsze. Wkrótce będzie to jednak kwestia sporna, ponieważ wszystkie wyszukiwania DOM będą wykonywane przy użyciu jednej funkcji natywnej. W każdym razie proste getElementById („wybrane”) lub $ („wybrane”) byłoby w tym momencie szybsze.
Alex K,
14
var length = $('#selected ul').children('li').length
// or the same:
var length = $('#selected ul > li').length

Prawdopodobnie można również pominąć liw selektorze dla dzieci.

Zobaczyć .length.

Felix Kling
źródło
13

Możesz użyć JavaScript (nie potrzebujesz jQuery)

document.querySelectorAll('#selected li').length;
Vng Văn Thanh
źródło
12
$('#selected ul').children().length;

a nawet lepiej

 $('#selected li').length;
Martin Algesten
źródło
4

Jest to po prostu możliwe childElementCountw czystym języku JavaScript

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>

Mo.
źródło
1

czysty js

selected.children[0].children.length;

Kamil Kiełczewski
źródło