是否有一种方法可以仅解除非命名空间事件的绑定
Is there a way to unbind non-namespaced events only?
是否有一种方法可以解除绑定事件,而不是jQuery中特定名称空间的一部分?作为inm,如果开发人员没有指定名称空间,是否存在事件所属的默认名称空间?
,
$('#id').bind('click.myEvents', handler); //a click with a specific namespace: myEvents
$('#id').bind('click',handler2); //a click without a specific namespace
我是否能够在不影响第一个点击事件的情况下瞄准第二个点击事件?
给你:
// 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];
)的引用。
现场演示: http://jsfiddle.net/simevidas/2p25N/1/
显示了如何选择不属于其他选择器的元素。我想你也许可以选择所有不在命名空间中的东西。不过我从来没试过,祝你好运。
我不知道,但是您可以将所有其他通用事件附加到您自己的通用名称空间。相关的处理程序不会覆盖彼此的引用。
如果这对于实现一个巨大的应用程序来说太麻烦了,并且你担心在命名空间中解绑定和重新绑定太多元素的成本,那么如果你不熟悉的话,请查看JQ的"delegate"方法和一般的事件委托。
事件冒泡到父元素。事件委托使用此行为将一个处理程序置于父阻塞点,检查事件对象以查看触发事件的原始元素,然后执行该行为。在一个元素上绑定/重新绑定的开销不是很大,所以这可能是你最好的选择。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 在javascript中使用命名空间
- react.js中的密钥绑定
- 如何在没有jQuery的情况下模拟按名称命名的事件或解除单个事件的绑定
- 事件处理程序绑定到匿名函数与命名函数
- 取消绑定除特定命名空间之外的所有命名空间中的事件
- 挖空.js当视图模型的属性重命名时,绑定会断开
- 余烬每循环加倍.使用内部每个循环变量的值绑定到外部每个循环的变量中命名相同的属性
- 动态加载外部 JavaScript 并将其绑定到特定的 DOM 元素或命名空间
- 将方法参数/参数传递给方法引用绑定,匿名,命名
- 是否有可能绑定到Click事件而不使用匿名函数——我只想调用命名函数
- 是否有一种方法可以仅解除非命名空间事件的绑定
- 在SVG命名空间中创建元素时绑定中断[使用JSFiddle]
- 如何发送“这个”到事件绑定语句中的命名函数
- 将某些事件处理程序与命名空间取消绑定