我想知道是否有一种简单的方法来检测我想要处理点击的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");
});

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

但是,正如我们在示例中所看到的,“标签”包括锚。 如果我单击锚点,我刚刚呈现的jQuery运行,但锚点什么都不做。 如果我删除了stopPropagation()和preventDefault(),则会点击锚点,但也会切换复选标记。

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

像这样的东西:

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

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

PS我不知道标签中是否有锚点。 因此,发现必须在click()函数中发生(除非有更好的设置,并且“if”可能以不同的方式发生)。

注意:这里我显示了一个target="blank"参数。 在真正的交易中,我将实际打开一个弹出窗口,但这并没有真正有所作为。

#1楼 票数:7 已采纳

这就是event.target的用途。

例如,在这种情况下:

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

jsFiddle在这里

#2楼 票数:0

您可以使用事件delegateTarget属性来查看触发事件的DOM元素。

if($(e.delegateTarget).is("a"))
    // execute code

#3楼 票数:0

你可以添加这个处理程序:

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

它将阻止click事件从链接冒泡到div,因此链接将被激活,并且事件永远不会到达将停止的div。

  ask by Alexis Wilke translate from so

未解决问题?本站智能推荐:

2回复

jQuery.Click是否适用于所有子div?

HTML: CSS: jQuery的: 编辑: 问题是让我们将click事件似乎应用于所有子div,我只希望它应用于“ #lowerLayer”
2回复

在jquery.click()方法上检查传播中的元素之一是否具有特定的类

在jQuery.click()方法中,可以使用even.target触发事件的元素类。 我想检查是否已单击的元素或其父元素之一具有某些特定的类。 但是它总是失败,因为单击了c2 。 尽管使用.parent() ,但我想知道是否有一种方法可以检查点击事件的传播。
2回复

检测用户点击与jquery.click()

所以我在页面上有一些<a href="..标记,它们具有一个内联onclick属性。如果用户单击一个并且未登录,则会提示他们登录,然后在页面上刷新jquery在<a>元素上触发.click() ,将用户带到他们最初想去的地方。 由于弹出窗口阻止程序的问题,我将其放置到如果j
1回复

jQuery.click()不能完成与实际单击链接相同的过程;需要点击实际链接以完成流程

我正在尝试模仿单击HTML页面上的链接的过程。 我在选择器上使用jQuery .click()函数。 该链接是基于Bootstrap nav-pills选项卡的表单的一部分。 当我单击nav-pills链接时,它的效果很好-表单上的标签显示并显示了该标签上的所有字段。 当我运行下面的代码
2回复

从jQuery.click增加一个变量

因此,我正在尝试制作一个游戏,基本上您单击图片,然后图片消失,然后将1添加到javascript变量中。 所以,我有这个: 我有一些图片,当您单击它们时,它们便消失了。 例如: 我只想要它,以便下面的代码(如您在上面看到的)将1加到一个名为picturesRemoved的javas
1回复

如何获取一个jQuery.click()以不隐藏其他.animate

因此,现在,我可以使该div滑到页面上。 我希望能够单击导航按钮之一,并显示另一个div。 我是javascript / jquery的新手,所以遇到了一些麻烦。 使用此代码,它使我动画的第一个div消失了。 $(document).ready({ $(".firstDiv").
3回复

如何从纯JavaScript代码中取消jQuery.click?

为了简单起见: 我有一个网页。 它具有一些脚本,其中之一将click事件绑定到<a>标记。 我想在此页面上添加纯JavaScript (不允许我修改其他js文件)并控制click事件。 我尝试过如下: 这段代码似乎不起作用。 我需要协助。 UPDATE 对不
1回复

jQuery.click函数仅对第一个链接不起作用

我的剃刀视图中有简单的foreach循环: 还有一个jQuery函数: 这将调用控制器动作,并返回一些需要在局部视图中显示的结果。 当我单击由foreach循环生成的任何href链接时,会定期调用并执行控制器动作,除了第一个动作没有任何反应时... 有人可以帮我弄这个吗?