2012-03-30 5 views
7

¿Hay una diferencia entre los siguientes selectores:padres vs parentNode

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

De lo que he leído, parentNode un amplio apoyo.

¿Hay alguna razón para usar una sobre la otra?

Respuesta

7

El selector jQuery .parent() selecciona el padre inmediato de todos los nodos en el conjunto de nodos. Sin embargo, dado que en su ejemplo el conjunto de nodos es solo un nodo $(this), existe poca diferencia práctica.

Esta diferencia importa si debe hacer algo como $(".foo").parent(), donde puede haber muchos nodos que tengan la clase foo.

2

parentNode es JS nativo, donde parent() no lo es.

Lo que está haciendo en su código es envolver los elementos DOM en el objeto jQuery para que pueda llamar a los métodos específicos de jQuery en él. Por lo tanto, no puede llamar a index() solo en this.parentNode, pero puede invocarlo en $ (this.parentNode) .index() ya que se convirtió en un objeto jQuery.

Su primer ejemplo ajusta el elemento DOM actual como un objeto jQuery y utiliza el método jQuery parent() para recuperar su padre y el índice de ese elemento primario. Su segundo ejemplo directamente envuelve el nodo primario directamente.

+1

Si es ampliamente compatible, ¿cuál sería la diferencia en esta situación? – r0m4n