2014-04-30 66 views
0

我想檢查一個元素是否有父/祖父母與某個類。我的代碼無法正常工作:無法檢查特定的父元素

js fiddle

的JavaScript:

$("body").on("click", function (e) { 
    if ($(e.target).parents(".granny")) alert("you have a granny"); 
}); 
+1

使用.granny代替老太 –

+0

它仍然無法正常工作的 – user1477955

+0

可能的複製[如何檢查jQuery的空對象(http://stackoverflow.com/questions/477667/how-以檢查無效的對象 - - jQuery的)。 –

回答

4

if($(e.target).parents(".granny")),因爲你正在檢查的jQuery對象,這是一個truthy值將永遠是正確的。

檢查length屬性:

if($(e.target).parents(".granny").length) 

當父搜索,closest()可能因爲它是更快的方式很有意思。它不循環所有父母,一旦找到匹配就停止。

雖然parents不會停止,直到它到達文檔的根,.parents()不包括目標本身。這意味着你點擊.granny直接(它成爲e.target),而使用closest,警報將彈出,而parents不會。

知道了,你是你真正需要什麼方法的唯一方法。

0

當您使用closest()時,一旦匹配就會停止。

$("body").on("click", function(e){ 
    if($(e.target).closest(".granny").length){ 
     alert("you have a granny"); 
    } 
}); 

fiddle

+1

正如FrédéricHamidi在他的評論中指出的那樣,「.closest」包含了元素本身,而「.parents」沒有。從技術上講,如果你點擊奶奶,她沒有奶奶(她是奶奶)。 OP可能不希望這樣做。 –

相關問題