parent vs parentNode

时间:2012-03-30 18:01:56

标签: jquery jquery-selectors

以下选择器之间是否存在差异:

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

根据我的阅读,parentNode得到广泛支持。

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

2 个答案:

答案 0 :(得分:8)

jQuery .parent()选择器选择 all 节点集中的节点的直接父节点。但是,由于在您的示例中,节点集只是一个节点$(this),因此几乎没有实际区别。

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

答案 1 :(得分:3)

parentNode是本机JS,其中parent()不是。

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

您的第一个示例将当前DOM元素包装为jQuery对象,而不是使用jQuery parent()方法检索它的父级而不是父级的索引。你的第二个例子直接包装了父节点。