JS中DOM元素监听了多个事件,如何只触发一个事件
项目中有个需求,某个DOM元素绑定了多个事件,在某些情况下,只触发其中一个特定事件
可能之前没讲清除需求,下面代码中的例子,事件a是某框架实现的,无法改内部源码。因特殊需求,对于某个DOM元素需要再次绑定一个事件,但是该事件只有在满足条件的情况下才执行。。jquery的trigger方法可以满足,通过传参数来判断。原生的怎么写呢,
之前大部分答案都是说在同一个事件里做判断,因无法改变框架源码所以方法行不通。。
<button id="button">button</button>
<script type="text/javascript">
var button = document.querySelector('button');
var a = function(e){
console.log('a');
};
var b = function(e){
console.log('b');
};
button.addEventListener('click', a);
button.addEventListener('click', b);
button.click();
</script>
代码如上,如何让button只触发a事件,而不触发b事件
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
这个应该是有条件的吧?满足条件A,则触发a事件,否则触发b事件
jqurey中有自定义事件~~~~你可以试试触发自定义事件来实现
你既然说了,在某些情况下。
那你就要在事件里去判断,当前是不是这样的情况。
总要判断的。
是不是可以换个思路,允许事件触发;但是在处理函数的头部做判断,条件不符合则退出不往下执行?
e.cancelBubble=true;// ie下阻止冒泡
e.stopPropagation();// 其它浏览器下阻止冒泡
jquery使用命名空间
既然你自己都清楚是
某些情况
下,那为什么不都卸载同一个click事件里面,在事件里面进行判断呢?总归是要判断的,写到一起还更方便点。
用的是框架,在事件里条件判断不行
我觉得可以试一下阻止默认行为的方法,然后根据你的入参不同(或者条件不同)去触发不同的方法。
使用stopImmediatePropagation