Jeder nutzt die Ereignisüberwachung in js häufig, um festzustellen, ob der Browser addEventListener und attachmentEvent unterstützt. Es gibt viele Methoden zur Ereignisüberwachung im Internet, aber einige davon sind nicht perfekt. Die folgende Methode ist für das Hinzufügen von Ereignis-Listenern dieselbe, außer dass einige Vorgänge beim Abbrechen der Ereignisbindung ausgeführt wurden. Jetzt kann die Verwendung anonymer Funktionen unterstützt werden, sodass beim Binden von Ereignissen keine separate Benennung der Funktion erforderlich ist.
Hauptcode:
/*Ereignisse binden und entbinden*/
var handleHash = {};
var bind = (function() {
if (window.addEventListener) {
return function( el, type, fn, capture) {
el.addEventListener(type, function(){
fn();
handleHash[type] = handleHash[type] || [];
handleHash [type].push(arguments.callee);
}, capture);
};
} else if (window.attachEvent) {
return function(el, type, fn, capture) {
el.attachEvent("on" type, function(){
fn();
handleHash[type] = handleHash[type] || [];
handleHash[type].push (arguments.callee);
});
};
}
})();
var unbind = (function(){
if (window.addEventListener) {
return function(el, type) {
if(handleHash[type]){
var i = 0, len = handleHash[type].length;
for (i; i el.removeEventListener(type, handleHash[type][i]);
}
};
};
} else if (window.attachEvent) {
return function(el, type) {
if(handleHash[type]){
var i = 0, len = handleHash[type].length;
for (i; i el.detachEvent("on" type, handleHash[type][i]);
}
};
};
}
})() ;
Prinzipanalyse:
handleHash fungiert als Hash-Tabellen-Cache-Ereignis. handleHash['event name'] ist ein Array zum Hinzufügen mehrerer Ereignis-Überwachungsmethoden. Durchlaufen Sie beim Aufheben der Bindung das Array von handleHash['event name'] und entfernen Sie es dann.
Verwendung:
bind (obj,'click',function(){
warning ('click');
});
unbind(obj,'click');