我有一个页面,它有两个不同的事件监听器从页面内部拾取点击事件。一个侦听器对于站点是通用的,另一个是特定于页面的。最近,添加了一个链接,该链接贯穿第一个处理程序,处理它,在新窗口中打开URL,然后停止事件。问题是,第二个处理程序然后执行,再次停止事件,并以某种方式继续并执行事件。
我有stopPropagation,并且cancelBubble都在此事件上执行。当它到达第二个处理程序时,它有一个被设置为true的被阻止字段,但它仍然继续。阻止它的唯一方法是检查第二个处理程序,如果事件到达并且阻止设置为true,则跳过其代码。
我的问题是,为什么会发生这种情况?为什么stopPropagation不起作用?这种情况发生在所有浏览器中,BTW。
答案 0 :(得分:1)
我想你试图阻止事件在同一个元素上触发。您是否尝试过使用stopImmediatePropagation方法?
答案 1 :(得分:0)
正如Samuel Liew正确评论的那样,将return false;
添加到第一个事件处理程序的末尾可能会有所帮助。这是因为某些浏览器会忽略.stopPropagation()
(但其他人会忽略返回)