2012-03-30 47 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