Digamos que eu tenho essa marcação:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
E eu tenho esse jQuery:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Como posso obter o índice do filho em li
relação ao pai, ao clicar nele li
?
Por exemplo, quando você clica em "Etapa 1", um alert
com "0" deve aparecer.
javascript
jquery
AgileMeansDoAsLittleAsPossible
fonte
fonte
algo como:
fonte
Dê uma olhada neste exemplo .
fonte
Não é necessário exigir uma grande biblioteca como o jQuery para fazer isso, se você não quiser. Para conseguir isso com a manipulação interna do DOM, obtenha uma coleção dos
li
irmãos em uma matriz e, ao clicar, verifique oindexOf
elemento clicado nessa matriz.Ou, com delegação de eventos:
Ou, se os elementos filhos puderem mudar dinamicamente (como em uma lista de tarefas), você precisará construir a matriz de
li
s a cada clique, e não antes:fonte
Delegate e Live são fáceis de usar, mas se você não tiver mais li: s adicionados dinamicamente, também poderá usar a delagação de eventos com ligação / clique normal. Deve haver algum ganho de desempenho usando esse método, pois o DOM não precisará ser monitorado para novos elementos correspondentes. Não tenho números reais, mas faz sentido :)
Você pode testá-lo em jsFiddle: http://jsfiddle.net/jimmysv/4Sfdh/1/
fonte
Ainda outra maneira
Demo https://jsfiddle.net/m9xge3f5/
fonte