ฉันจะนับจำนวนเด็กได้อย่างไร?


108

ฉันมีรายชื่อ

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

ฉันต้องการ jQuery เพื่อนับจำนวนรายการในรายการของฉัน


1
ลืม jquerydocument.querySelectorAll('ul li').length
caub

คำตอบ:


188

คุณสามารถใช้.lengthดังนี้:

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

.lengthบอกจำนวนที่ตรงกับตัวเลือกที่พบดังนั้นสิ่งนี้จะนับจำนวน<li>ภายใต้<ul>องค์ประกอบที่คุณมี ... หากมีลูกย่อยให้ใช้"ul > li"แทนเพื่อรับเฉพาะลูกโดยตรง ถ้าคุณมีอื่น ๆ<ul>องค์ประกอบในหน้าเว็บของคุณเพียงแค่เปลี่ยนเลือกให้ตรงกับเพียงหนึ่งของเขาตัวอย่างเช่นถ้ามี ID "#myListID > li"ที่คุณต้องการใช้

ในสถานการณ์อื่น ๆ ที่คุณไม่ทราบประเภทลูกคุณสามารถใช้*ตัวเลือก (สัญลักษณ์แทน) หรือ.children()เช่นนี้:

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

หรือ:

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

1
จะเป็นอย่างไรถ้าไม่รู้ว่าเด็กคนนั้นคือ "ลี่" และอาจเป็นอะไรก็ได้
Starx

7
@Starx:$("#parent").children().length
rekamoyka

1
@AlecAnanian ไม่ฉันรู้ได้อย่างไร ฉันหมายความว่าฉันหวังว่านิคจะเพิ่มคำตอบของเขาด้วย
Starx

2
@Starx - เพิ่มในกรณีที่ช่วยคนไม่กี่คนบนท้องถนน :)
Nick Craver

จะเป็นอย่างไรหากมองไม่เห็นองค์ประกอบ
ᴍᴀᴛᴛʙᴀᴋᴇʀ

6

คุณไม่จำเป็นต้องใช้ jQuery สำหรับสิ่งนี้ คุณสามารถใช้ของ .childNodes.lengthJavaScript

ตรวจสอบให้แน่ใจว่าได้ลบ 1 หากคุณไม่ต้องการรวมโหนดข้อความเริ่มต้น (ซึ่งว่างเปล่าโดยค่าเริ่มต้น) ดังนั้นคุณจะใช้สิ่งต่อไปนี้:

var count = elem.childNodes.length - 1;

1

ลองใช้:

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

0

จะเกิดอะไรขึ้นถ้าคุณใช้สิ่งนี้เพื่อกำหนดตัวเลือกปัจจุบันเพื่อค้นหาลูกของมันเพื่อให้สิ่งนี้ถือ: <ol>จากนั้นจะมี<li>วิธีการเขียนตัวเลือกที่ var count = $(this+"> li").length;ไม่ทำงานอย่างไร ..


ถ้า ol มีคลาสคุณสามารถเขียนได้$("ol.class > li").length
Qwerty

0

คุณสามารถทำได้โดยใช้ jQuery:

วิธีนี้ได้รับรายชื่อลูกของมันจากนั้นจะนับความยาวของรายการนั้นง่ายๆเพียงแค่นั้น

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

วิธี find () ข้าม DOM ลงไปตามลูกหลานจนถึงลูกหลานคนสุดท้าย

หมายเหตุ:วิธี children () ข้ามผ่าน DOM ทรีระดับเดียว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.