有没有办法阻止特定命名空间的传播?
问题描述:
假设我们创建一个事件监听器,如下:有没有办法阻止特定命名空间的传播?
$(element).on("click.namespace",function(e){alert('hi')});
现在我里面,我想停下来的第一个一个div另一个事件,保持其他点击事件:
$(element).find('div').on("click",function(e){
e.stopPropagation(); //I want it to stop only the previous function
});
是有没有办法阻止传播只为这个特定的命名空间?允许所有其他功能正常运行?
它必须是命名空间相关的,因为我想停止该事件是在外部库
答
是的,你可以使用未算子的
$(element+":not(tags to be avoided)").on("click.namespace",function(){
alert('hi')
});
答
添加为一类,然后检查它。
$(element).on("click", function(evt){
if ($(this).hasClass('namespace')) {
evt.stopPropagation();
}
alert('hi');
});
因此,你想要阻止** ** **元素上的名称空间事件处理程序的执行?如果是的话,它看起来像你正在寻找http://api.jquery.com/event.stopImmediatePropagation/。请注意,调用此函数的处理程序必须先被绑定。 –
不完全,这只是为了简单起见,我想停止的事件处理程序绑定到html,但是当有人点击我的下拉列表时,我希望它保持打开状态。所以我需要停止传播此点击事件,但只能在下拉命名空间中传播,所以其他点击事件可以继续 – Megarushing
好吧,让我们看看现在是否了解它:有一些第三方代码将事件处理程序与命名空间绑定在一起例如在'click'上,你想阻止执行所有'click.namespace'处理程序? –