@rsp उत्तर सही हैंडलर को अनबाइंड करने की समस्या को सही ढंग से हल करता है, यह वास्तव में नामस्थान की समस्या का उत्तर नहीं देता है। इस संभाल करने के लिए आप इस तरह थोड़ा और कोडिंग करने की ज़रूरत होगी:
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);
तो योग करने के लिए: यह वास्तव में कई घटना श्रोताओं सेट - अपने नेमस्पेसिंग के प्रत्येक भाग के लिए एक। दुर्भाग्यवश यह कार्यक्षमता मूल रूप से समर्थित नहीं है, लेकिन जैसा कि आप देख सकते हैं इसे अपेक्षाकृत सरल प्राप्त किया जा सकता है। बस सावधान रहें कि भले ही यह स्क्रिप्ट गहरी नेमस्पेसिंग का समर्थन करे (उदाहरण के लिए scroll.parent.child
) यह कई घटना श्रोताओं (इस मामले में 3) को बांध देगा, और इस प्रकार यह अव्यवस्थित है।
आप संभवतः यह अधिक प्रदर्शन कर सकते हैं, लेकिन यह ऐसा हो जाता है।