2014-02-20 94 views
5

假设我们创建一个事件监听器,如下:有没有办法阻止特定命名空间的传播?

$(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 
}); 

是有没有办法阻止传播只为这个特定的命名空间?允许所有其他功能正常运行?

它必须是命名空间相关的,因为我想停止该事件是在外部库

+0

因此,你想要阻止** ** **元素上的名称空间事件处理程序的执行?如果是的话,它看起来像你正在寻找http://api.jquery.com/event.stopImmediatePropagation/。请注意,调用此函数的处理程序必须先被绑定。 –

+0

不完全,这只是为了简单起见,我想停止的事件处理程序绑定到html,但是当有人点击我的下拉列表时,我希望它保持打开状态。所以我需要停止传播此点击事件,但只能在下拉命名空间中传播,所以其他点击事件可以继续 – Megarushing

+2

好吧,让我们看看现在是否了解它:有一些第三方代码将事件处理程序与命名空间绑定在一起例如在'click'上,你想阻止执行所有'click.namespace'处理程序? –

回答

0

是的,你可以使用未算子的

$(element+":not(tags to be avoided)").on("click.namespace",function(){ 
alert('hi') 
}); 
0

添加为一类,然后检查它。

$(element).on("click", function(evt){ 
    if ($(this).hasClass('namespace')) { 
     evt.stopPropagation(); 
    } 
    alert('hi'); 
}); 
相关问题