以下选择器之间是否存在差异:
var index = $(this).parent().index();
var index2 = $(this.parentNode).index();
根据我的阅读,parentNode得到广泛支持。
是否有理由使用其中一个?
答案 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()方法检索它的父级而不是父级的索引。你的第二个例子直接包装了父节点。