Javascript jQuery事件命名空间中所有事件的一个侦听器?
我知道我能够使用jQuery的、$.fn.on、off和trigger函数来命名事件的名称空间。是否可以设置一个能够侦听特定命名空间中所有事件的处理程序 例如:Javascript jQuery事件命名空间中所有事件的一个侦听器?,javascript,jquery,events,Javascript,Jquery,Events,我知道我能够使用jQuery的、$.fn.on、off和trigger函数来命名事件的名称空间。是否可以设置一个能够侦听特定命名空间中所有事件的处理程序 例如: $(window).on(".event_namespace", function(e){ //handler }); $(window).trigger("testEvent.event_namespace"); $(window).trigger("testEventTwo.event_namespace"); 预期的行
$(window).on(".event_namespace", function(e){
//handler
});
$(window).trigger("testEvent.event_namespace");
$(window).trigger("testEventTwo.event_namespace");
预期的行为是侦听器将捕获使用指定命名空间触发的任何事件
最终目标只是能够监听一组事件,这些事件实际上是由我无法访问的代码触发的。我想说的是,只需将事件添加到此名称空间,然后就可以捕获这些事件,而无需知道事件名称本身;只有名称空间
可能吗?编辑、更新
试一试
jshiddle这有什么帮助吗:谢谢;但主要的一点是不必知道事件类型;只有名称空间。我已经更新了这个问题。
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])
})
}
})
}
});