jQuery事件命名空间中所有事件的一个侦听器
One listener for ALL events in jQuery event namespace?
我知道我有能力使用jQuery、$.fn.on、off和trigger函数命名事件。是否可以设置一个能够侦听某个命名空间中所有事件的处理程序?
例如:
$(window).on(".event_namespace", function(e){
//handler
});
$(window).trigger("testEvent.event_namespace");
$(window).trigger("testEventTwo.event_namespace");
预期的行为是侦听器将捕获使用指定命名空间触发的任何事件。。。
最终目标只是能够监听一组事件,这些事件实际上将由我无法访问的代码触发。我希望能够说,"只需将您的事件添加到此命名空间中",然后能够捕获这些事件,而无需知道事件名称本身;仅命名空间。
可能吗?
编辑、更新
尝试
var ns = ".event_namespace", log = [];
// place below block at bottom of script block ,
// after `n` events attached to `n` window, document, elements
// listen for events having `ns` namespace ,
// attached to `window, document, "*"` , above
$(window, document, "*").on("event", function(e, ns, type) {
// do stuff when event having `ns` occurs
log.push([ns, type]);
$("#log").html("type, namespace: " + log.slice(-1)
+ "<br> total <i>" + ns + "</i> events: "
+ log.length)
});
// if dynamic elements , events later attached ,
// re-run this piece to add `event` event to those elements
$.each([window, document, $("*")], function(k, v) {
if($._data(v, "events") !== undefined) {
$.each($._data(v, "events"), function(key, val) {
if (val[0].namespace === ns.slice(- (ns.length -1))) {
$(v).on(key + ns, function(e) {
$(e.target).trigger("event", [e.namespace, e.type])
})
}
})
}
});
jsfiddlehttp://jsfiddle.net/guest271314/s87j4o6r/4/
相关文章:
- 使用类从一个标记中双击事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 导航到特定事件的另一个变量页面
- 来自文档或下一个静态父级的事件委派
- 在创建对象后附加一个jquery事件
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 如何在所有ng点击事件AngularJS上启动一个方法
- 是否<asp:文本框>有一个onFocusLost事件
- React应用程序:道具在下一个事件后更新
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 全局屏幕span onclick触发一个事件javascript
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 添加一个javascript函数来下载elfinder上的事件
- jQuery触发器事件在一个循环中多次出现
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 是否可以同时为一个元素的所有事件指定阻止默认值
- angularjs调用事件中控制器的一个函数