zoukankan      html  css  js  c++  java
  • jQuery 事件的命名空间的含义

    对于jquery的on的events解释是 一个或多个空格分隔的事件类型和可选的命名空间,或仅仅是命名空间,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。

    这里的命名空间是什么意思呢?作用又是什么呢?

    $('#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'); 
  • 相关阅读:
    老调重弹之整除与实数除
    #define 预处理指令(C++,C#,VB.NET)
    char类型和string类型(C++,C#)
    使用XPATH对XML数据进行解析
    SQL Server查询优化之:使用提示(Hints)
    XSLT几种应用场景
    在C++中定义常量的两种方法的比较
    为SSIS编写自定义任务项(Task)之高级篇
    利用反射绑定事件处理程序(C#)
    自定义打开Reflector的方式
  • 原文地址:https://www.cnblogs.com/answercard/p/5797855.html
Copyright © 2011-2022 走看看