jQuery zählt untergeordnete Elemente


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>

Ich möchte die Gesamtzahl der <li>Elemente in zählen <div id="selected"></div>. Wie ist das mit jQuery's möglich .children([selector])?



1
In reinem JS ist die Antwort von @ Mo. noch etwas niedrig, aber verwenden Sieelement.childelementCount
Charles L.

Antworten:



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

oder:

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

10
Nur eine Notiz .size () wurde zugunsten von .length
Eric Kigathi

18

schnellste:

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

2
Dies ist nicht die schnellste, in der Tat haben Sie es verlangsamt, indem Sie dort hinzugefügt div:)
Nick Craver

1
Es hängt wirklich davon ab, welchen Browser Sie verwenden. In vielen modernen Browsern wird beim Hinzufügen des Elements findByElement verwendet, bevor nach ID oder Klasse gesucht wird, was langsamer ist. Bald wird dies jedoch in beiden Fällen ein strittiger Punkt sein, da alle DOM-Suchen mit einer nativen Funktion durchgeführt werden. In jedem Fall wäre eine einfache getElementById ('selected') oder $ ('# selected') an dieser Stelle schneller.
Alex K

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

Sie könnten wahrscheinlich auch liin der Kinderauswahl weglassen .

Siehe .length.


13

Sie können JavaScript verwenden (jQuery wird nicht benötigt)

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


4

Mit childElementCountreinem Javascript ist das einfach möglich

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>


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.