我想知道是否有一种简单的方法来检测对出现在我要处理点击的 div 中的链接的点击...
因此,有一个简单的 HTML 代码示例:
<div class="checkmark">
<div class="box"> </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
}
关于javascript - 我们可以检测是否在具有 jQuery.click() 的 DIV 中单击了链接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176456/