Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

jQuery的事件命名空间

  在标准的DOM操作中对事件的分类是直接从事件名到具体的操作函数。但是jQuery的事件命名空间机制提供了在同一个事件下对处理函数再分类的功能。在多个插件同时要处理一个DOM元素的同一个事件的场景下这个机制可以区分开不同插件下元素的处理程序。
  绑定事件时在click后面点上一些东西,click也依然会触发到。后面的部分就是属于click这个事件命名空间下的各个分支。 $(document).on("click.c1",function(){console.log("c1");});
$(document).on("click.c2",function(){console.log("c2");});
$(document).off("click.c2"); //仅c2被移除,不影响c1
  这个程序中最后一行的off可以移除掉所有绑定在click.c2上的事件,而且不会影响到click.c1。所以,如果有两个插件同时操作一个DOM对象就可以放入不同的命名空间中。但是要注意这个命名空间是树状的,如果树根移除了枝叶也会移除。比如上面的程序的最后一行不是移除click.c2而是直接移除click,那么c1和c2都会被移除。 $(document).off("click"); //c1和c2都会被移除   这个性质也用于更深层次的命名空间树。 $(document).on("click.c1.x1",function(){console.log("c1.x1");});
$(document).on("click.c1.x2",function(){console.log("c1.x2");});
$(document).on("click.c2",function(){console.log("c2");});
$(document).off("click.c1"); //c1.x2和c1.x2都会被移除,但不影响c2
  有了这个机制,有时候我们不想对事件函数命名,但后面的程序需要移除这个事件函数时我们可以考虑对事件的子空间命名。这样就可以省去一个用于释放事件时用的函数变量了。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^