Katakanlah saya memiliki markup ini:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
Dan saya punya jQuery ini:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Bagaimana saya bisa mendapatkan indeks anak li
relatif terhadap orang tuanya, ketika mengklik itu li
?
Misalnya, ketika Anda mengklik "Langkah 1", tanda alert
"0" akan muncul.
javascript
jquery
AgileMeansDoAsLittleAsPossible
sumber
sumber
sesuatu seperti:
sumber
Lihatlah contoh ini .
sumber
Tidak perlu memerlukan perpustakaan besar seperti jQuery untuk mencapai ini, jika Anda tidak mau. Untuk mencapai hal ini dengan manipulasi DOM bawaan, dapatkan koleksi
li
saudara kandung dalam array, dan saat klik, periksaindexOf
elemen yang diklik di dalam array itu.Atau, dengan delegasi acara:
Atau, jika elemen anak dapat berubah secara dinamis (seperti dengan daftar todo), maka Anda harus membuat array
li
s pada setiap klik, daripada sebelumnya:sumber
Delegasi dan Langsung mudah digunakan tetapi jika Anda tidak akan memiliki li: ditambahkan secara dinamis, Anda dapat menggunakan delagasi acara dengan bind / klik normal juga. Seharusnya ada beberapa peningkatan kinerja menggunakan metode ini karena DOM tidak harus dimonitor untuk elemen pencocokan baru. Belum punya angka sebenarnya tetapi masuk akal :)
Anda dapat mengujinya di jsFiddle: http://jsfiddle.net/jimmysv/4Sfdh/1/
sumber
Namun cara lain
Demo https://jsfiddle.net/m9xge3f5/
sumber