2012-03-30 22 views
7

有以下选择之间的差异:父VS parentNode

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

从我已阅读,parentNode的广泛支持。

是否有理由使用其中一种?

回答

7

jQuery .parent()选择器选择的所有的直接父节点集中的节点。但是,由于在你的例子中,节点集只是一个节点$(this),实际上几乎没什么区别。

如果您要执行类似$(".foo").parent()的操作,可能会有许多具有foo类的节点,这种差异很重要。

2

parentNode是原生JS,其中parent()不是。

您在代码中所做的是将DOM元素封装在jQuery对象中,以便您可以调用jQuery特定的方法。所以,你不能在this.parentNode上调用index(),但是你可以在$(this.parentNode).index()上调用它,因为它已经变成了一个jQuery对象。

您的第一个示例将当前DOM元素封装为jQuery对象,并且使用jQuery parent()方法检索其父元素并获取该父元素的索引。你的第二个例子直接直接包装父节点。

+1

如果得到广泛支持,这种情况会有什么不同? – r0m4n 2012-03-30 18:04:57