无法检查特定的父元素

时间:2014-04-30 13:41:21

标签: javascript jquery html

我想检查某个元素是否具有某个类的父/祖父母。我的代码无法正常运行:

js fiddle

JavaScript的:

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

2 个答案:

答案 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");
    }
});

fiddle