Làm thế nào tôi có thể đếm số trẻ em?


108

Tôi có một danh sách

<ul>
  <li>
  <li>
  <li>
  ...
</ul>

Tôi cần jQuery để đếm số lượng mục trong danh sách của mình.


1
quên jquerydocument.querySelectorAll('ul li').length
caub

Câu trả lời:


188

Bạn có thể sử dụng .length, như thế này:

var count = $("ul li").length;

.lengthcho biết có bao nhiêu kết quả phù hợp với bộ chọn được tìm thấy, do đó, điều này sẽ tính xem bạn có bao nhiêu phần tử <li>bên dưới <ul>... nếu có phần tử con, hãy sử dụng "ul > li"thay thế để chỉ lấy phần tử con trực tiếp . Nếu bạn có các <ul>phần tử khác trong trang của mình, chỉ cần thay đổi bộ chọn để chỉ khớp với phần tử của nó, ví dụ: nếu nó có ID mà bạn sử dụng "#myListID > li".

Trong các tình huống khác mà bạn không biết loại con, bạn có thể sử dụng *bộ chọn (ký tự đại diện) hoặc .children()như sau:

var count = $(".parentSelector > *").length;

hoặc là:

var count = $(".parentSelector").children().length;

1
Điều gì xảy ra nếu, nó không được biết rằng đứa trẻ là "li", và có thể là bất cứ điều gì?
Starx

7
@Starx:$("#parent").children().length
rekamoyka 25/09/12

1
@AlecAnanian, Không, tôi biết cách. Tôi có nghĩa là tôi đã hy vọng Nick cũng sẽ thêm điều đó vào câu trả lời của mình.
Starx

2
@Starx - được thêm vào trong trường hợp nó giúp một vài người trên đường :)
Nick Craver

Điều gì sẽ xảy ra nếu phần tử không hiển thị?
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ

6

Bạn không cần jQuery cho việc này. Bạn có thể sử dụng JavaScript .childNodes.length.

Chỉ cần đảm bảo trừ đi 1 nếu bạn không muốn bao gồm nút văn bản mặc định (nút này trống theo mặc định). Vì vậy, bạn sẽ sử dụng như sau:

var count = elem.childNodes.length - 1;

1

Cố gắng sử dụng:

var count = $("ul > li").size();
alert(count);

0

Điều gì sẽ xảy ra nếu bạn đang sử dụng điều này để xác định bộ chọn hiện tại để tìm con của nó, vì vậy điều này đúng: <ol>sau đó có <li>cách viết một bộ chọn var count = $(this+"> li").length;sẽ không hoạt động ..


nếu ol có một lớp bạn có thể viết$("ol.class > li").length
Qwerty

0

Bạn có thể làm điều này bằng cách sử dụng jQuery:

Phương thức này nhận một danh sách các con của nó sau đó đếm độ dài của danh sách đó, đơn giản như vậy.

$("ul").find("*").length;

Phương thức find () đi ngang qua DOM xuống dưới dọc theo con cháu, đến hết phương thức con cuối cùng.

Lưu ý: phương thức children () truyền qua một cấp độ duy nhất xuống cây DOM.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.