无法检查特定的父元素

Cannot check for specific parent element

本文关键字:元素 检查      更新时间:2023-09-26

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

js小提琴

JavaScript:

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

if( $(e.target).parents(".granny") )将始终为true,因为您正在检查jQuery对象,这是一个truthy值。

请改为检查长度属性:

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

当搜索父对象时,closest()可能很有趣,因为它要快得多。它不会在所有父母中循环,一旦找到匹配项就会停止。

虽然parents在到达文档根之前不会停止,但.parents()不包括目标本身。这意味着你在使用closest时直接点击.granny(它变成了e.target(,警报会弹出,而parents不会。

知道这一点,你是唯一一个知道你真正需要什么方法的人。

使用closest()时,一旦匹配,它就会停止。

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

小提琴