子元素上的 JavaScript 事件处理程序

标签 javascript jquery

问题是当我在父元素上附加事件处理程序时。它还附加到子元素。那么,如何将事件仅附加到父级。我尝试了 stopPropagation()/stopImmediatePropagation() 但都不起作用。

HTML

<div class="circle">
    <ul class="circle-child">
        <li><a href="#"></a></li>
    </ul>
</div>  

JavaScript

$(".circle").click(function() {
    console.log("clicked");
});

这是 jsfiddle演示。

最佳答案

该事件仅附加到父级。但从逻辑上讲,由于子元素包含在父元素中,因此如果单击子元素,也会单击父元素,并且由于事件冒泡,因此处理程序将被触发。

您可以检查this(事件绑定(bind)到的项目)是否是事件的目标。试试这个:

http://jsfiddle.net/vtVpP/

$(".circle").click(function (e) {
    if (this === e.target) {
        console.log("clicked");
    }
});

关于子元素上的 JavaScript 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434924/

相关文章:

javascript - Vee Validate 字段验证未更新

javascript - google.script.run 返回未定义的数组

javascript - 如何使用 Protractor 测试是否加载了正确的图像?

javascript - 保持容器的宽度为最长的 child 的宽度

jquery float,每个点的大小和颜色不同

jquery - Bootstrap DateTimePicker - 禁用现在之前的日期和时间(当前时间)

javascript - Ember创建记录错误

jquery - 如何使用 Jquery 在父 ID 中查找相似的 Id

jquery - 如何定位 Materialize CSS 事件轮播元素?

Jquery下拉列表