gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:52 24 4
gpt4 key购买 nike

我想知道是否有一种简单的方法来检测对出现在我要处理点击的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com