Heim  >  Artikel  >  Web-Frontend  >  Kapselt einen Javascript-Ereignis-Listener, der anonyme Funktionen_Javascript-Fähigkeiten unterstützt

Kapselt einen Javascript-Ereignis-Listener, der anonyme Funktionen_Javascript-Fähigkeiten unterstützt

WBOY
WBOYOriginal
2016-05-16 16:46:041279Durchsuche

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:

Code kopieren Der Code lautet wie folgt:

/*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:

Code kopieren Der Code lautet wie folgt:

bind (obj,'click',function(){
warning ('click');
});
unbind(obj,'click');
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn