У меня есть следующая структура узла HTML:
<div id="foo">
<div id="bar"></div>
<div id="baz">
<div id="biz"></div>
</div>
<span></span>
</div>
Как мне подсчитать количество непосредственных детей foo
того типа div
? В приведенном выше примере результат должен быть два ( bar
и baz
).
Ответы:
Направьте потомков элемента с идентификатором 'foo', который является div. Затем извлекается размер упакованного набора.
источник
$('#table > th').size()
.Я рекомендую использовать
$('#foo').children().size()
для лучшей производительности.Я создал тест jsperf, чтобы увидеть разницу в скорости, и
children()
метод превзошел подход дочернего селектора (#foo> div) как минимум на 60% в Chrome (сборка сборок v15), на 20-30% в Firefox (v4).Кстати, само собой разумеется, что эти два подхода дают одинаковые результаты (в данном случае 1000).
[Обновить] Я обновил тест, включив тест size () и длины, и они не имеют большого значения (результат:
length
использование немного быстрее (2%), чемsize()
)[Update] Из - за неправильной разметки видели в OP (до «Разметка ПРОВЕРЯЕМЫЕ» обновление мной), так
$("#foo > div").length
и в$('#foo').children().length
результате один и тот же ( jsfiddle ). Но для правильного ответа, чтобы получить ТОЛЬКО 'div' детей, СЛЕДУЕТ использовать селектор детей для правильной и лучшей производительностиисточник
.length
на самом деле является предпочтительным методом, потому что он не имеет накладных расходов при вызове функции.$('#extraLinks').children().size()
считать текстовые поля в div (называемом extraLinks), почему я получаю,4
когда их всего 2. В общем, я получаю длину, умноженную на 2 ... Любая идея, почему? Спасибовыбирает все div, которые являются прямыми потомками #foo,
когда у вас есть набор дочерних элементов, вы можете использовать функцию size:
или вы можете использовать
Оба вернут вам одинаковый результат
источник
источник
В ответ на mrCoders ответ с помощью jsperf, почему бы просто не использовать узел dom?
Вы можете попробовать этот тест здесь: http://jsperf.com/jquery-child-ele-size/7
Этот метод получает 46 095 оп / с, в то время как другие методы в лучшем случае 2000 оп / с
источник
источник
В jQuery есть функция .size (), которая будет возвращать количество раз, которое элемент появляется, но, как указано в документации по jQuery, он медленнее и возвращает то же значение, что и свойство .length, поэтому лучше просто использовать. свойство длины. Отсюда: http://www.electrictoolbox.com/get-total-number-matched-elements-jquery/
источник
источник
С самой последней версией jquery вы можете использовать
$("#superpics div").children().length
.источник
или
Как уже было сказано, оба возвращают один и тот же результат.
Но функция size () - это скорее jQuery «ПК».
У меня была похожая проблема с моей страницей.
А пока просто опустите> и все должно работать нормально.
источник
источник
div
потомков, а не только детей.Попробуйте это для непосредственных дочерних элементов типа div
источник