javascript - 我们可以检测是否在具有 jQuery.click() 的 DIV 中单击了链接吗?

标签 javascript jquery

我想知道是否有一种简单的方法来检测对出现在我要处理点击的 div 中的链接的点击...

因此,有一个简单的 HTML 代码示例:

<div class="checkmark">
    <div class="box">&nbsp;</div>
    <div class="label">Checkbox label possibly <a href="/random" target="_blank">with an anchor</a>.</div>
</div>

所以在这个例子中,我使用了一组 <div>标签来创建复选标记。 “盒子”是我显示一个小正方形的地方,并且在检查时,还显示复选标记(例如,红十字会。)

为了使复选标记按预期工作,我使用 jQuery 并捕获鼠标在主 <div> 上的点击。标签:

jQuery("checkmark").click(function(e){
    e.stopPropagation();
    e.preventDefault();

    jQuery("box", this).toggle("checked");
});

非常简单,效果很好(“checked”类足以显示复选标记,因为它可以使用 CSS 定义。)

但是,正如我们在示例中看到的,“标签”包含一个 anchor 。如果我单击 anchor ,我刚才展示的 jQuery 就会运行,但 anchor 什么也不做。如果我删除 stopPropagation() 和 preventDefault() anchor 被点击,但复选标记也被切换。

我想知道的是:是否有一种简单的方法来检查传播是否会触发 anchor ,在这种情况下,只需忽略“复选标记”代码中的点击?

类似的东西:

jQuery("checkmark").click(function(e){
    if(!(anchor.clicked()))  // how do we do this?
    {
        e.stopPropagation();
        e.preventDefault();

        jQuery("box", this).toggle("checked");
    }
});

附言我不知道标签中是否有 anchor 。所以发现必须发生在 click() 函数中(除非有更好的设置并且“如果”可能发生不同)。

注意:这里我展示了一个target="blank"范围。在实际交易中,我实际上会打开一个弹出窗口,但这在这里并没有什么区别。

最佳答案

这就是event.target是为了。

例如,在这种情况下:

if($(e.target).is("a")) { 
   // It was the anchor element that was clicked
}

jsFiddle here

关于javascript - 我们可以检测是否在具有 jQuery.click() 的 DIV 中单击了链接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176456/

相关文章:

javascript - three.jsl - 如何创建交互式鼠标控制的 360 图像?

javascript - 如何让点击div时出现弹出框?

c# - 有没有用 C# 编写的类似 jQuery 的库?

javascript - 如何在使用 JQuery 到达最后一张幻灯片时不显示下一张幻灯片?

javascript - 传递给 jQuery 的 one() 方法的函数仅在第一次触发事件时执行

javascript - 在 for 循环中创建闭包 - 我这样做对吗?

javascript - 未捕获的 TypeError : Meteor. Cron 不是构造函数

javascript - 如何更改 Yup 的日期格式验证

javascript - Pubnub javascript视频聊天摄像头和麦克风静音机制?

javascript - 在 javascript 中使用 getElementsByTagName 获取输入字段的值和名称?