我想檢查一個元素是否有父/祖父母與某個類。我的代碼無法正常工作:無法檢查特定的父元素
的JavaScript:
$("body").on("click", function (e) {
if ($(e.target).parents(".granny")) alert("you have a granny");
});
我想檢查一個元素是否有父/祖父母與某個類。我的代碼無法正常工作:無法檢查特定的父元素
的JavaScript:
$("body").on("click", function (e) {
if ($(e.target).parents(".granny")) alert("you have a granny");
});
if($(e.target).parents(".granny"))
,因爲你正在檢查的jQuery對象,這是一個truthy值將永遠是正確的。
檢查length屬性:
if($(e.target).parents(".granny").length)
當父搜索,closest()
可能因爲它是更快的方式很有意思。它不循環所有父母,一旦找到匹配就停止。
雖然parents
不會停止,直到它到達文檔的根,.parents()
不包括目標本身。這意味着你點擊.granny
直接(它成爲e.target
),而使用closest
,警報將彈出,而parents
不會。
知道了,你是你真正需要什麼方法的唯一方法。
當您使用closest()
時,一旦匹配就會停止。
$("body").on("click", function(e){
if($(e.target).closest(".granny").length){
alert("you have a granny");
}
});
正如FrédéricHamidi在他的評論中指出的那樣,「.closest」包含了元素本身,而「.parents」沒有。從技術上講,如果你點擊奶奶,她沒有奶奶(她是奶奶)。 OP可能不希望這樣做。 –
使用.granny代替老太 –
它仍然無法正常工作的 – user1477955
可能的複製[如何檢查jQuery的空對象(http://stackoverflow.com/questions/477667/how-以檢查無效的對象 - - jQuery的)。 –