• 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'); 
  • 相关阅读:
    PHP javascript cookie
    angular.js初探
    熟悉陌生框架或代码, 产品设计小结
    question2answer论坛框架分析及web开发思考
    一个很好用的系统管理的命令lsof(转载)
    Linux nc命令用法收集
    Linux IO实时监控iostat命令详解(转载)
    AIX中查找端口号和进程
    bash之局部变量与子shell(转载)
    Linux下产生随机密码10方法
  • 原文地址:https://www.cnblogs.com/answercard/p/5797855.html
Copyright © 2020-2023  润新知