के साथ इवेंट श्रोताओं को जोड़ना और निकालना मैं वेनिला जावास्क्रिप्ट टूल लिख रहा हूं, जब सक्षम हो तो इवेंट श्रोताओं को इसमें से प्रत्येक तत्व में पास किया जाता है। दुर्भाग्य से यह काम नहीं करता है, क्योंकि जहाँ तक मुझे पता है, जब एक घटना श्रोता जोड़ने, मापदंडों केवल अनाम कार्यों में पारित किया जा सकतापैरामीटर
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
:
मैं कुछ इस तरह करना चाहते हैं :
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
समस्या यह है कि मैं घटना श्रोता दूर करने के लिए जब उपकरण अक्षम किया गया है में सक्षम होना चाहिए है, लेकिन मुझे नहीं लगता कि यह Ano साथ घटना श्रोताओं को दूर करने के लिए संभव है है nymous कार्यों।
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
मैं मैं आसानी से अपने समस्या को हल करने jQuery इस्तेमाल कर सकते हैं पता है, लेकिन मैं निर्भरता कम करने के लिए कोशिश कर रहा हूँ। jQuery को किसी भी तरह से गोल करना चाहिए, लेकिन कोड जंगल का थोड़ा सा है!
तो अपने श्रोताओं को नाम दें, फिर आप 'removeEventListener' का उपयोग कर सकते हैं। – marekful
चूंकि आप जानते हैं कि jQuery आपकी समस्या का समाधान कर सकता है, आपको बस स्रोत कोड को पढ़ने की आवश्यकता है कि यह कैसे काम करता है। – pktangyue
कम से कम 'वेनिला जावास्क्रिप्ट' शब्द बोल्ड करने के लिए +1 और jQuery के बारे में आपके बिंदु को इटैलिकिस करना! (उम्मीद है कि कोई भी वास्तव में एक समाधान के रूप में jQuery का सुझाव नहीं देगा ...) लेकिन +1 भी है क्योंकि यह एक अच्छा सवाल है। – guypursey