Javascript 是否有方法仅解除绑定非命名空间事件?

Javascript 是否有方法仅解除绑定非命名空间事件?,javascript,jquery,events,Javascript,Jquery,Events,有没有办法取消绑定不属于jQuery中特定命名空间的事件?作为inm,如果开发人员没有指定事件的名称空间,那么是否存在事件所属的默认名称空间 例: 我是否能够在不影响第一个单击事件的情况下以第二个单击事件为目标?显示了如何选择不属于另一个选择器的元素。我想你可以选择所有的事情,但不是。 但我从未尝试过,祝你好运。给你: // unbinds non-namespaced event handlers function unbind( elem, type ) { $.each( $

有没有办法取消绑定不属于jQuery中特定命名空间的事件?作为inm,如果开发人员没有指定事件的名称空间,那么是否存在事件所属的默认名称空间

例:

我是否能够在不影响第一个单击事件的情况下以第二个单击事件为目标?

显示了如何选择不属于另一个选择器的元素。我想你可以选择所有的事情,但不是。 但我从未尝试过,祝你好运。

给你:

// unbinds non-namespaced event handlers
function unbind( elem, type ) {   
    $.each( $( elem ).data( 'events' )[ type ], function () {
        if ( this.namespace === '' ) {
            $( elem ).unbind( type, this.handler );
        }
    });
}
然后:

unbind( elem, 'click' );
其中,elem是对DOM元素var elem=$'id'[0];的引用


实时演示:

我不知道,但您可以将所有其他通用事件附加到您自己的通用名称空间。相关处理程序不会覆盖彼此的引用

如果这对于实现应用程序来说太麻烦了,并且您担心解除绑定然后重新绑定名称空间中太多元素的成本,那么如果您不熟悉JQ的委托方法和事件委托,请查看一下

事件冒泡到父元素。事件委派使用此行为将一个处理程序置于父阻塞点,检查事件对象以查看触发事件的原始元素,然后执行该行为。在一个元素上绑定/重新绑定不会产生大量开销,因此这可能是您的最佳选择

unbind( elem, 'click' );