@rsp yanıtı doğru işleyiciyi kaldırma sorununu çözdüğü için, gerçekten ad boşaltma sorununu çözmez. senin için ad her bölümü için bir tane - bu aslında birkaç olay dinleyicilerini ayarlar:
function on(elm, evtName, handler) {
evtName.split('.').reduce(function(evtPart, evt) {
evt = evt ? evt +'.'+ evtPart : evtPart;
elm.addEventListener(evt, handler, true);
return evt;
}, '');
}
function off(elm, evtName, handler) {
evtName.split('.').reduce(function(evtPart, evt) {
evt = evt ? evt +'.'+ evtPart : evtPart;
elm.removeEventListener(evt, handler, true);
return evt;
}, '');
}
// Your handler
function onScroll(e) { ... }
// To bind it
on(window, 'scroll.myScrollNamespace', onScroll);
// To unbind it
off(window, 'scroll.myScrollNamespace', onScroll);
Yani Özetle: Böyle biraz daha kodlama yapmak gerekir bu işlemek için. Bu işlevsellik maalesef doğal olarak desteklenmemektedir, ancak görebileceğiniz gibi nispeten basit bir şekilde elde edilebilir. Sadece bu betik derin ad alanını (ör.
scroll.parent.child
) desteklese bile, çok fazla olay dinleyicisine (bu durumda 3) bağlanmasına ve böylece tavsiye edilmemesine dikkat edin.
Bunu daha fazla performansla yapabilirsiniz, ancak bunu halledebilirsiniz.