Saya memiliki struktur simpul HTML berikut:
<div id="foo">
<div id="bar"></div>
<div id="baz">
<div id="biz"></div>
</div>
<span></span>
</div>
Bagaimana cara menghitung jumlah anak langsung dari foo
, yang bertipe div
? Pada contoh di atas, hasilnya harus dua ( bar
dan baz
).
Jawaban:
Arahkan anak-anak elemen dengan id 'foo' yang divs. Kemudian mengambil ukuran set terbungkus yang dihasilkan.
sumber
$('#table > th').size()
.Saya sarankan menggunakan
$('#foo').children().size()
untuk kinerja yang lebih baik.Saya telah membuat tes jsperf untuk melihat perbedaan kecepatan dan
children()
metode yang mengalahkan pendekatan pemilih anak (#foo> div) oleh setidaknya 60% di Chrome (canary build v15) 20-30% di Firefox (v4).Ngomong-ngomong, tak perlu dikatakan, kedua pendekatan ini menghasilkan hasil yang sama (dalam hal ini, 1000).
[Pembaruan] Saya telah memperbarui tes untuk menyertakan tes ukuran () vs panjang, dan mereka tidak membuat banyak perbedaan (hasil:
length
penggunaan sedikit lebih cepat (2%) daripadasize()
)[Perbarui] Karena markup yang salah terlihat di OP (sebelum pembaruan 'markup divalidasi' oleh saya), keduanya
$("#foo > div").length
&$('#foo').children().length
menghasilkan hal yang sama ( jsfiddle ). Tetapi untuk jawaban yang benar untuk mendapatkan HANYA 'div' anak-anak, satu HARUS menggunakan pemilih anak untuk kinerja yang benar & lebih baiksumber
.length
sebenarnya metode yang disukai karena tidak memiliki overhead panggilan fungsi.$('#extraLinks').children().size()
menghitung kotak teks dalam div (bernama extraLinks) mengapa saya dapatkan4
ketika mereka hanya 2. Secara umum, saya mendapatkan panjangnya dikalikan dengan 2 ... Ada yang tahu kenapa? Terima kasihmemilih semua divs yang merupakan keturunan langsung dari #foo
setelah Anda memiliki anak-anak, Anda dapat menggunakan fungsi ukuran:
atau bisa kamu gunakan
Keduanya akan mengembalikan hasil yang sama kepada Anda
sumber
sumber
Menanggapi jawaban mrCoders menggunakan jsperf mengapa tidak menggunakan dom node?
Anda dapat mencoba tes di sini: http://jsperf.com/jquery-child-ele-size/7
Metode ini mendapat 46.095 op / s sedangkan metode lain terbaik 2000 op / s
sumber
sumber
jQuery memiliki fungsi .size () yang akan mengembalikan berapa kali elemen muncul tetapi, seperti yang ditentukan dalam dokumentasi jQuery, itu lebih lambat dan mengembalikan nilai yang sama dengan properti .length sehingga yang terbaik adalah cukup menggunakan. properti panjang. Dari sini: http://www.electrictoolbox.com/get-total-number-matched-elements-jquery/
sumber
sumber
Dengan versi jquery terbaru, Anda dapat menggunakan
$("#superpics div").children().length
.sumber
atau
Seperti yang sudah dikatakan, keduanya mengembalikan hasil yang sama.
Tetapi fungsi size () lebih jQuery "PC".
Saya memiliki masalah yang sama dengan halaman saya.
Untuk saat ini, abaikan saja> dan itu akan berfungsi dengan baik.
sumber
sumber
div
keturunan, bukan hanya anak-anak.Coba ini untuk elemen anak langsung dari tipe div
sumber