jQuery 事件的命名空间简单了解

 更新时间:2013年11月22日 16:19:15   作者:  
用 jQuery 绑定和解绑事件监听器都是非常简单的,怎样精确地解绑其中一个监听器?我们需要了解一下事件的命名空间,感兴趣的朋友不要错过
用 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学习笔记之无new构建详解

    jquery学习笔记之无new构建详解

    大部分人使用 jQuery 的时候都是使用第一种无 new 的构造方式,直接 $('') 进行构造,这也是 jQuery 十分便捷的一个地方。这篇文章主要给大家介绍了关于jquery学习笔记之无new构建的相关资料,需要的朋友们下面来一起看看吧。
    2017-12-12
  • jQuery之ajax技术的详细介绍

    jQuery之ajax技术的详细介绍

    本篇文章是对jQuery中的ajax技术进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 用jquery实现动画跳到顶部和底部(这个比较简单)

    用jquery实现动画跳到顶部和底部(这个比较简单)

    用jquery实现动画的跳到顶部和底部,当点击顶部按钮的时候,执行方法,scrollTop属性获取选中标签距滚动条的距离
    2014-09-09
  • 基于jquery实现手风琴效果

    基于jquery实现手风琴效果

    这篇文章主要为大家详细介绍了基于jquery实现手风琴效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • jQuery中last()方法用法实例

    jQuery中last()方法用法实例

    这篇文章主要介绍了jQuery中last()方法用法,实例分析了last()方法获取匹配元素集合中的最后一个元素时的使用技巧,需要的朋友可以参考下
    2015-01-01
  • Jquery通过JSON字符串创建JSON对象

    Jquery通过JSON字符串创建JSON对象

    这篇文章主要介绍了Jquery如何通过JSON字符串创建JSON对象,并附详细示例,需要的朋友可以参考下
    2014-08-08
  • jQuery实现可展开合拢的手风琴面板菜单

    jQuery实现可展开合拢的手风琴面板菜单

    这篇文章主要介绍了jQuery实现可展开合拢的手风琴面板菜单,涉及jQuery中slideUp及slideDown方法的相关使用技巧,代码简单实用,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • jQuery事件委托代码实践详解

    jQuery事件委托代码实践详解

    这篇文章主要介绍了jQuery事件委托代码实践详解, 事件委托是利用事件冒泡,只指定一个事件处理程序来管理某一类型的所有事件。,需要的朋友可以参考下
    2019-06-06
  • jQuery的load()方法及其回调函数用法实例

    jQuery的load()方法及其回调函数用法实例

    这篇文章主要介绍了jQuery的load()方法及其回调函数用法,实例分析了load方法的简单使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • $.ajax json数据传递方法

    $.ajax json数据传递方法

    $.ajax下json数据的传递方法,大家可以参考下。这样就可以传递json数据了
    2008-11-11

最新评论