devdev / in the loop

Come conoscere la posizione di un elemento con jQuery index o in vanilla Javascript

Il motto di jQuery è “Write less, do more”, anche se gli ultimi anni stiamo vedendo uno shifting di molte soluzioni verso il Javascript puro, il cosiddetto vanilla.

Vediamo, sia per scopo didattico che di utilizzo come costruire un’alternativa al popolare metodo index(), che restituisce la posizione, come indice appunto, di un elemento rispetto ai suoi fratelli.
Partiamo da una struttura html come questa:
<ul>
  <li id="foo">foo</li>
  <li id="bar">bar</li>
  <li id="baz">baz</li>
</ul>

Come sappiamo l’index parte da 0, quindi volendo ottenere l’indice dell’elemento #bar dovremmo scrivere questo:

console.log( $(‘#bar’).index() );
// 1

 

Come possiamo farlo in vanilla Javascript?

function indexInParent(node) {
    var children = node.parentNode.childNodes;
    var num = 0;
    for (var i=0; i<children.length; i++) {
        if (children[i]==node) return num;
        if (children[i].nodeType==1) num++;
    }
    return -1;
}

console.log( indexInParent(document.getElementById('bar')) );
Analogamente al metodo index() di jQuery, la nostra funzione restituisce -1 se non ha trovato l’elemento.
Questo articolo ti è stato utile?
Javascript – LETTURA 4 MINUTI Alternativa a jQuery .eq() in Javascript
Una delle funzioni di traversing più utili di jQuery è sicuramente .eq() . Ci permette di accedere ad un elemento di…
Javascript – LETTURA 6 MINUTI Utilizzare i parametri GET in Javascript con URLSearchParams
I parametri URL, che tutti conosciamo come parametri GET o query) vengono utilizzati per passare informazioni alla pagina che stiamo…
Javascript – LETTURA 4 MINUTI Aggiungere una regola CSS con Javascript
Aggiungere una regola CSS in modo dinamico con Javascript può esserci utile in vari casi: uno riguarda sicuramente le performance,…
Javascript – LETTURA 3 MINUTI Simulare click in vanilla JavaScript con MouseEvent
Come possiamo scrivere l’equivalente del metodo .click() di jQuery, simulando di fatto un click? Cercando in rete si scopre facilmente che…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.