我想知道是否有一种简单的方法来检测我想要处理点击的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()方法上检查传播中的元素之一是否具有特定的类

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

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

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

jquery.click(callmethod)

上面的问题是我不想要事件,但是我又一个var。 但是行的问题是,它在运行时获取var123的值,并且由于我在循环中添加了它,所以总是最终使用var123的最后一个值。 看起来它正在使用var123的引用。 创建时如何使用var123的值代替单击时间。
2回复

如何检测是否在DIV中单击了特定的类链接,然后覆盖DIV的单击动作?

我的页面上有以下几种DIV: 单击类.entry的DIV时,我将触发以下操作: 单击类.app-context-link的链接时,我触发以下信息: 问题: 现在,当我单击app-context-link时,似乎都触发了两个动作:对于DIV(因为检测到.click事件
1回复

使用属性“title”将html元素链接到jQuery.click()

我有一个HTML代码: 我需要在标记上链接jQuery click事件。 使用这里给出的解决方案,我写了以下javascript: 但是,页面在页面加载时发出警报(“abc”)而不是单击标记。 另外要通知上面的代码不在加载函数jQuery(function() {... }并
16回复

jQuery.click()与onClick

我有一个庞大的jQuery应用程序,并且我将以下两种方法用于点击事件。 第一种方法 的HTML jQuery的 第二种方法 的HTML JavaScript函数调用 我在应用程序中使用第一种或第二种方法。 哪一个更好? 性能更好? 和标准?
3回复

是否有可能只在顶部元素上使用jQuery.click触发器?

我正在尝试创建一个网站,用户可以点击任何元素来编辑它的CSS。 我使用以下命令将click函数添加到所有lis,div和uls。 问题是如果我点击一个li元素,那么我会得到它的警报,以及它下面的任何元素。 (所有容器)。 单击时是否可以仅触发顶部元素?
3回复

如何陷阱“在新标签页中打开”点击jquery.click

我有一个jquery脚本,它将click事件附加到每个链接,在单击链接时运行一个动作。 这一直很有效,但我得到了一些反对意见,这些反馈正在挫败我。 用户右键单击链接并在新选项卡中打开它。 当她这样做时,jquery没有捕获点击。 坏用户。 我用cmd-click再现了这个。
5回复

jQuery单击一个链接

我有一个具有href属性的元素,该属性调用javascript函数。 此元素位于两个类中:( class="icon32 icon-close" )。 该链接在具有.modal类的div上表示为“ X”,用于关闭div 。 我的问题是,当用户按下“ esc”键时,是否可以关闭div,从而调
5回复

jQuery:如何检测鼠标单击位置是否在div之外

我有这段代码可以检测到网站上的任何鼠标单击: 如果点击的位置不在#specificDiv之外,如何使其仅触发动作?