* यह लक्ष्य वर्ग के बच्चों को घटनाओं को ट्रिगर करने के लिए अनुमति देने के लिए संपादित किया गया था। विवरण के लिए नीचे उत्तर देखें। *
एक इवेंट श्रोता को एक वर्ग में जोड़ने के लिए एक वैकल्पिक उत्तर जहां आइटम अक्सर जोड़े और निकाले जा रहे हैं। यह jQuery के on
फ़ंक्शन से प्रेरित है जहां आप एक बच्चे तत्व के लिए चयनकर्ता में पारित कर सकते हैं जो घटना सुन रहा है।
var base = document.querySelector('#base'); // the container for the variable content
var selector = '.card'; // any css selector for children
base.addEventListener('click', function(event) {
// find the closest parent of the event target that
// matches the selector
var closest = event.target.closest(selector);
if (closest && base.contains(closest)) {
// handle class event
}
});
फिडल: https://jsfiddle.net/u6oje7af/94/
यह base
तत्व के बच्चों के लिए क्लिकों के लिए सुनेगा और अगर किसी क्लिक के लक्ष्य का चयनकर्ता से मेल खाने वाला कोई अभिभावक करता है, तो क्लास ईवेंट को संभाल लिया जाएगा। आप तत्वों को जोड़ सकते हैं और हटा सकते हैं जैसे कि आप व्यक्तिगत तत्वों में अधिक क्लिक श्रोताओं को जोड़ना चाहते हैं। इस श्रोता के जुड़ने के बाद जोड़े गए तत्वों के लिए भी यह उन सभी को पकड़ लेगा, जैसे कि jQuery की कार्यक्षमता (जो मुझे लगता है कि हुड के नीचे कुछ समान है)।
यह प्रचार करने वाली घटनाओं पर निर्भर करता है, इसलिए यदि आप stopPropagation
कहीं और घटना पर हैं , तो यह काम नहीं कर सकता है। इसके अलावा, closest
फ़ंक्शन में IE के साथ कुछ संगतता मुद्दे हैं (स्पष्ट रूप से क्या नहीं?)।
इसे एक फंक्शन में बनाया जा सकता है, यदि आपको इस प्रकार की क्रिया को बार-बार सुनने की आवश्यकता हो, जैसे
function addChildEventListener(base, eventName, selector, handler) {
base.addEventListener(eventName, function(event) {
var closest = event.target.closest(selector);
if (closest && base.contains(closest)) {
// passes the event to the handler and sets `this`
// in the handler as the closest parent matching the
// selector from the target element of the event
handler.call(closest, event);
}
});
}
=========================================
EDIT: यह पोस्ट मूल रूप से matches
फ़ंक्शन के लिए उपयोग की जाती है ईवेंट तत्व पर DOM तत्व लक्षित होते हैं, लेकिन इससे ईवेंट के लक्ष्य केवल डायरेक्ट क्लास तक ही सीमित रहते हैं। इसके closest
बजाय फ़ंक्शन का उपयोग करने के लिए अद्यतन किया गया है , जिससे वांछित वर्ग के बच्चों को घटनाओं को ट्रिगर करने की अनुमति मिलती है। मूल matches
कोड मूल फ़ाइल में पाया जा सकता है:
https://jsfiddle.net/u6oje7af/23/