jQuery 事件的命名空间简单了解
2018-10-12 14:02
302 查看
用 jQuery 绑定和解绑事件监听器都是非常简单的。但是当你为一个元素的一个事件绑定了多个监听器时,怎样精确地解绑其中一个监听器?我们需要了解一下事件的命名空间。
看下面这段代码:
像上面这样绑定事件监听器,当元素被点击时,doSomething 和 doSomethingElse 这两个监听器都会被触发。这是使用 jQuery 的一个便利之处,可以随时给元素的同一个事件添加不同的监听器。不像用 onclick 那样,新的监听器会覆盖旧的。
如果你想解绑其中一个监听器,比如 doSomething,怎么做呢?
是这样吗?
注意!上面这行代码会把元素的 click 事件的所有监听器全部解绑,而这并不是我们要的结果。
幸运的是 jQuery 的 .off() 方法可以接受第二个参数,就像 .on() 一样。只要把监听器函数的名字作为第二个参数传入 .off() 方法,就能够解绑指定的监听器。
但是如果你不知道这个函数的名字,或者你用的是匿名函数:
怎样才能精确地解绑某一个 click 事件监听器呢?
先上代码:
这里不只是把 click 事件作为参数传入 .on() 方法,而是给 click 事件指定了一个命名空间,然后监听了这个命名空间里的 click 事件。此时,即使监听器是匿名函数,实际上它也是 “ 有名 ” 的了。现在你可以像下面这样解绑某一个具体的命名空间里的事件监听器了。
这是 jQuery 为我们提供的又一个方便而强大的功能,它的内部实现肯定很有意思!
看下面这段代码:
$('#element')
.on('click', doSomething)
.on('click', doSomethingElse);
像上面这样绑定事件监听器,当元素被点击时,doSomething 和 doSomethingElse 这两个监听器都会被触发。这是使用 jQuery 的一个便利之处,可以随时给元素的同一个事件添加不同的监听器。不像用 onclick 那样,新的监听器会覆盖旧的。
如果你想解绑其中一个监听器,比如 doSomething,怎么做呢?
是这样吗?
$('#element').off('click');
注意!上面这行代码会把元素的 click 事件的所有监听器全部解绑,而这并不是我们要的结果。
幸运的是 jQuery 的 .off() 方法可以接受第二个参数,就像 .on() 一样。只要把监听器函数的名字作为第二个参数传入 .off() 方法,就能够解绑指定的监听器。
$('#element').off('click', doSomething);
但是如果你不知道这个函数的名字,或者你用的是匿名函数:
$('#element').on('click', function() {
console.log('doSomething');
});
怎样才能精确地解绑某一个 click 事件监听器呢?
先上代码:
$('#element').on('click.myNamespace', function() {
console.log('doSomething');
});
这里不只是把 click 事件作为参数传入 .on() 方法,而是给 click 事件指定了一个命名空间,然后监听了这个命名空间里的 click 事件。此时,即使监听器是匿名函数,实际上它也是 “ 有名 ” 的了。现在你可以像下面这样解绑某一个具体的命名空间里的事件监听器了。
$('#element').off('click.myNamespace');
这是 jQuery 为我们提供的又一个方便而强大的功能,它的内部实现肯定很有意思!
您可能感兴趣的文章:
相关文章推荐
- jQuery 事件的命名空间简单了解
- 了解JQuery的事件绑定特性和事件命名空间机制,编写更好、更灵活的事件处理代码
- 了解JQuery的事件绑定特性和事件命名空间机制,编写更好、更灵活的事件处理代码
- jQuery的事件绑定命名空间
- jQuery 自定义事件以及命名空间
- jQuery 事件的命名空间
- 谈谈jquery的事件名称和命名空间
- Jquery的on,off事件详解,如何利用命名空间来解绑特定的事件
- 49、实例 使用jQuery管理事件之事件命名空间
- jQuery事件绑定、解绑、命名空间
- 锋利的jQuery-4--给事件添加命名空间
- jQuery 事件的命名空间
- 第一百七十一节,jQuery,高级事件,模拟操作,命名空间,事件委托,on、off 和 one
- 【jQuery学习笔记-----jQuery事件命名空间】
- jQuery 事件的命名空间
- jQuery事件命名空间多事件绑定自定义事件js 命名空间 javascript命名空间
- jquery利用命名空间移除绑定事件的方法
- jquery利用命名空间移除绑定事件的方法
- jquery中bind事件时的命名空间用法
- jQuery中绑定事件的命名空间详解