Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法检查特定的父元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 无法检查特定的父元素

Javascript 无法检查特定的父元素,javascript,jquery,html,Javascript,Jquery,Html,我想检查元素是否有具有特定类的父/祖父母。我的代码无法正常工作: JavaScript: $("body").on("click", function (e) { if ($(e.target).parents(".granny")) alert("you have a granny"); }); if($(e.target).parents(“.granny”)将始终为真,因为您正在检查jQuery对象,它是一个真实值 改为检查length属性: if( $(e.target).p

我想检查元素是否有具有特定类的父/祖父母。我的代码无法正常工作:

JavaScript:

$("body").on("click", function (e) {
    if ($(e.target).parents(".granny")) alert("you have a granny");
});
if($(e.target).parents(“.granny”)
将始终为真,因为您正在检查jQuery对象,它是一个真实值

改为检查length属性:

if( $(e.target).parents(".granny").length )
当寻找父母时,可能会很有趣,因为它的速度快得多。它不会在所有父母之间循环,一旦找到匹配项,它就会停止

虽然
parents
在到达文档根目录之前不会停止,但是
.parents()
不包括目标本身。这意味着,如果您直接单击
.granny
(它将成为
e.target
),在使用
最近的
时,警报将弹出,而
家长则不会

知道了这一点,你才是真正需要什么方法的唯一关键。

if($(e.target)。parents(“.granny”)
将始终为真,因为你正在检查jQuery对象,这是一个真实的值

改为检查length属性:

if( $(e.target).parents(".granny").length )
当搜索父对象时,可能会很有趣,因为它要快得多。它不会在所有父母之间循环,一旦找到匹配项,它就会停止

虽然
parents
在到达文档根目录之前不会停止,但是
.parents()
不包括目标本身。这意味着,如果您直接单击
.granny
(它将成为
e.target
),在使用
最近的
时,警报将弹出,而
家长则不会

知道了这一点,你才是真正需要什么方法的唯一决定者。

当你使用
最接近()
时,一旦出现匹配,它就会停止

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

当您使用
最接近()
时,一旦出现匹配,它就会停止

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

使用.granny代替granny它仍然不起作用。使用.granny代替granny它仍然不起作用。正如Frédéric Hamidi在我的回答中删除的评论中所述,
。最近的
包括元素本身,而
。parents
不包括元素本身。从技术上讲,如果你点击奶奶,她没有奶奶(她就是奶奶)。OP可能不希望这样。正如Frédéric Hamidi在我的回答中删除的评论中所说,
。最近的
包括元素本身,而
。父母
不包括。从技术上讲,如果你点击奶奶,她没有奶奶(她就是奶奶)。OP可能不希望这样。