JQuery считать дочерние элементы

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>

Я хочу посчитать общее количество <li>элементов в <div id="selected"></div>. Как это возможно с помощью jQuery .children([selector])?

gautamlakum
источник
1
В чистом JS, ответ @ Мо. element.childelementCount
Чарльз Л.

Ответы:

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

или:

$("#selected > ul > li").length
bcosca
источник
10
Просто примечание .size () устарела в пользу .length
Эрик Кигати
18

самый быстрый:

$("div#selected ul li").length
Али Тархини
источник
2
Это не самый быстрый, на самом деле вы замедлили его, добавив divтуда :)
Ник Крейвер
1
Это действительно зависит от того, какой браузер вы используете. Во многих современных браузерах добавление элемента использует findByElement перед поиском по id или классу, что медленнее. Однако в любом случае это будет спорный вопрос, потому что все поиски в DOM будут выполняться с использованием одной встроенной функции. В любом случае, простой getElementById ('selected') или $ ('# selected') будет быстрее на этом этапе.
Алекс К
14
var length = $('#selected ul').children('li').length
// or the same:
var length = $('#selected ul > li').length

Вы, вероятно, также можете опустить liв детском селекторе.

См .length.

Феликс Клинг
источник
13

Вы можете использовать JavaScript (не нужен JQuery)

document.querySelectorAll('#selected li').length;
Инг Ван Тхань
источник
12
$('#selected ul').children().length;

или даже лучше

 $('#selected li').length;
Мартин Альгестен
источник
4

Это просто возможно childElementCountв чистом 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>

Пн.
источник