Disons que j'ai ce balisage:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
Et j'ai ce jQuery:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Comment puis-je obtenir l'index de l'enfant par li
rapport à son parent, en cliquant dessus li
?
Par exemple, lorsque vous cliquez sur «Étape 1», un alert
avec «0» devrait apparaître.
javascript
jquery
AgileMeansDoAsLittleAsPossible
la source
la source
quelque chose comme:
la source
Jetez un œil à cet exemple .
la source
Il n'est pas nécessaire d'avoir besoin d'une grande bibliothèque comme jQuery pour accomplir cela, si vous ne le souhaitez pas. Pour y parvenir avec la manipulation DOM intégrée, obtenez une collection des
li
frères et sœurs dans un tableau et, en cliquant, vérifiez l'indexOf
élément cliqué dans ce tableau.Ou, avec délégation événementielle:
Ou, si les éléments enfants peuvent changer dynamiquement (comme avec une liste de tâches), vous devrez alors construire le tableau de
li
s à chaque clic, plutôt qu'au préalable:la source
Delegate et Live sont faciles à utiliser mais si vous n'avez plus de li: s ajoutés dynamiquement, vous pouvez également utiliser la délagation d'événement avec un lien / clic normal. Il devrait y avoir un gain de performances en utilisant cette méthode car le DOM n'aura pas à être surveillé pour de nouveaux éléments correspondants. Je n'ai pas de chiffres réels mais c'est logique :)
Vous pouvez le tester sur jsFiddle: http://jsfiddle.net/jimmysv/4Sfdh/1/
la source
Encore une autre façon
Démo https://jsfiddle.net/m9xge3f5/
la source