2012-03-30 8 views
7

C'è una differenza tra le seguenti selettori:genitore vs parentNode

var index = $(this).parent().index(); 
var index2 = $(this.parentNode).index(); 

Da quello che ho letto, parentNode è ampiamente supportato.

C'è un motivo per usare l'uno sull'altro?

risposta

7

Il selettore jQuery .parent() seleziona il genitore immediato di tutti i nodi nel set di nodi. Tuttavia, poiché nel tuo esempio il set di nodi è solo un nodo $(this), c'è poca differenza pratica.

Questa differenza è importante se si dovesse fare qualcosa come $(".foo").parent(), dove potrebbero esserci molti nodi che hanno la classe foo.

2

parentNode è nativo JS, dove parent() non lo è.

Quello che stai facendo nel tuo codice è il wrapping degli elementi DOM nell'oggetto jQuery in modo da poter richiamare i metodi specifici di jQuery su di esso. Pertanto, non è possibile chiamare index() solo su this.parentNode, ma è possibile chiamarlo su $ (this.parentNode) .index() poiché è diventato un oggetto jQuery.

Il tuo primo esempio avvolge l'elemento DOM corrente come oggetto jQuery e utilizza il metodo jQuery parent() per recuperare il suo genitore e l'indice di quel genitore. Il tuo secondo esempio include direttamente il parentnode.

+1

Se è ampiamente supportato, quale sarebbe la differenza in questa situazione? – r0m4n

Problemi correlati