[英]Single Event Handler for all events javascript/jQuery
I know I can have one handler handle multiple events using jQuery like: 我知道我可以让一个处理程序使用jQuery处理多个事件,例如:
$('#myID').bind('blur mousedown mouseup focus', function (e) {}
Also, I can register an event from all elements using jQuery like: 另外,我可以使用jQuery从所有元素注册一个事件,例如:
$(document).on("click", "*", function(event) {
console.log("Click");
});
I have two questions: 我有两个问题:
How do I register a single listener for multiple events in pure javascript? 如何在纯JavaScript中为多个事件注册一个侦听器?
Is there any way to have a single handler for all events in a document using JS or jQuery, like a master handler which will delegate the events to my other handlers? 有没有办法使用JS或jQuery为文档中的所有事件提供一个处理程序,例如将事件委托给其他处理程序的主处理程序?
I am looking at something like this: 我正在看这样的东西:
$(document).on("*", "*", function(event) {
console.log("I am the master handler...");
// call delegates
});
This is the closest i can get by javascript: JSBIN-Demo 这是我可以通过javascript获得的最接近的代码: JSBIN-Demo
<input type="text" id="myText" />
var allEvents = ['focus','blur','mouseover','mousedown','mouseup','mousemove', 'click'];
function masterHandler(){
var event = event || window.event;
switch(event.type){
case 'click':
console.log('cliked');
break;
case 'mouseover':
console.log('mouseover');
break;
}
}
function bindAllEvents(selector, handler) {
var elements = document.querySelectorAll(selector);
for(var i=0;i<elements.length;i++){
for (var key in allEvents){
elements[i].addEventListener(allEvents[key], handler, false);
}
}
}
bindAllEvents('*', masterHandler);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.