前端的事件冒泡(例如点击一次onclick事件执行两次)解决办法

Posted baimeishaoxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端的事件冒泡(例如点击一次onclick事件执行两次)解决办法相关的知识,希望对你有一定的参考价值。

问题概要:

当我运用antd 中 radio组件的时候发现radio组件是有bug的 就是你不能给他赋予id 和 value,同时也绑定不上onclick等事件。
举个例子:

技术图片

可以看到 你就算赋予了id 和value 前端页面渲染也是不正常的 value无论赋成什么 结果都是on
但是我还需要对他进行一些操作需要绑定他的onclick事件 所以我得解决办法就是在radio标签外套了一层div 绑定了id属性,同时将onclick事件绑定在这层div上。当我们触发它时,通过jQuery的子选择器找到内部radio。但是这样做问题又来了 就是这篇文章的主题 事件冒泡
简单来说,就是因为点击label的时候,会触发套在其内部的的input的click事件,导致事件再次触发
解决办法就是:

 $("label").click(function (e) {
     if ($(e.target).is("input"))
     return;
});

2018-2-28日更:
其实更应该从思路上解决问题,当发生事件冒泡时,我们是否可以将这两个引起问题的dom节点分开成两个div来进行处理,而不是通过js控制。
参考链接:http://blog.csdn.net/qazwsx33...

以上是关于前端的事件冒泡(例如点击一次onclick事件执行两次)解决办法的主要内容,如果未能解决你的问题,请参考以下文章

事件捕获事件冒泡事件委托

前端js点击事件怎么取消捕获

移动端JS父层Touch事件用了冒泡,子层onclick事件不生效

怎样使js中的onclick事件只触发一次,就是我点击了一次,再次点击的时候不让其再触发

事件冒泡和阻止事件冒泡

js如何阻止onclick点击事件响应两次