【问题标题】:How to force not to stopPropagate如何强制不停止传播
【发布时间】:2014-04-24 07:47:03
【问题描述】:
我正在使用一个 jquery 插件,它在某些元素上绑定点击事件。
我知道插件使用了
e.stopPropagation();
但我也希望在点击这些元素时拥有自己的事件。
有没有办法让插件的 stopPropagation 处于非活动状态,或者让我的事件优先于插件绑定?
【问题讨论】:
标签:
jquery
events
bind
stoppropagation
【解决方案1】:
e.stopPropagation() 阻止事件向上传播到父对象。它不会阻止附加到同一对象的其他事件处理程序触发。
因此,如果您想要对象上的其他事件处理程序,您可以直接附加它们,它们根本不会受到e.stopPropagation() 的影响。您只需确保将自己的事件附加到事件的实际源对象,而不是父对象。
在回答您问题的另一部分时,防止e.stopPropagation() 调用的唯一方法是删除调用它的事件处理程序或修改插件的代码以删除该行。但是,幸运的是,您可以在对象上拥有自己的有效事件处理程序,而无需执行其中任何一项。
【解决方案2】:
将点击事件添加到您的元素,如下所示,它将首先调用您的点击事件,然后将事件冒泡到插件附加的其他事件
$("#element").on("click", function(){
alert('my event called');
});
【讨论】:
-
它将优先于他自己的事件而不是插件添加的事件,在此最终插件事件将被调用之后,创建 jsfiddle 在这里我在 dom 就绪时添加一个事件,然后在单击时再次添加另一个事件。
【解决方案3】:
Event.prototype.stopPropagation = null;