我想检查某个元素是否具有某个类的父/祖父母。我的代码无法正常运行:
JavaScript的:
$("body").on("click", function (e) {
if ($(e.target).parents(".granny")) alert("you have a granny");
});
答案 0 :(得分:4)
if( $(e.target).parents(".granny") )
将永远为真,因为您正在检查jQuery对象,这是一个真正的值。
检查长度属性:
if( $(e.target).parents(".granny").length )
搜索父级时,closest()
可能会很有趣,因为它更快。它不会遍历所有父母,一旦找到匹配就会停止。
虽然parents
在到达文档根目录之前不会停止,但.parents()
不包含目标本身。这意味着您在使用.granny
时直接点击e.target
(它成为closest
),警报会弹出,parents
则不会。
知道这一点,你是你真正需要的唯一方法。
答案 1 :(得分:0)
当您使用closest()
时,只要匹配就会停止。
$("body").on("click", function(e){
if( $(e.target).closest(".granny").length ){
alert("you have a granny");
}
});