द्वारा डाले गए तत्व में क्लिक ईवेंट जोड़ें यदि मैं पहले "संपादन" पर क्लिक करता हूं तो मुझे console.log('click happend')
मिलता है लेकिन यदि मैं इन बॉक्सों में से एक जावास्क्रिप्ट के माध्यम से जोड़ता हूं ("बॉक्स जोड़ें" पर क्लिक करें) और फिर click
संपादित करें नया बॉक्स काम नहीं करता है। मुझे पता है क्योंकि जावास्क्रिप्ट तब चलता है जब तत्व वहां नहीं था और यही कारण है कि कोई ईवेंट इवेंट श्रोता नहीं है। मैं jQuery के साथ भी जानता हूं मैं ऐसा कर सकता था:जावास्क्रिप्ट
$('body').on('click', '.edit', function(){ // do whatever };
और यह काम करेगा।
लेकिन मैं इसे सादा जावास्क्रिप्ट के साथ कैसे कर सकता हूं? मुझे कोई सहायक संसाधन नहीं मिला। एक साधारण उदाहरण बनाया जो मैं काम करना चाहता हूं। इसे हल करने का सबसे अच्छा तरीका क्या है?
तो समस्या यह है कि: यदि आप एक बॉक्स जोड़ते हैं और फिर "संपादित करें" पर क्लिक करें तो कुछ भी नहीं होता है।
var XXX = {};
XXX.ClickMe = function(element){
this.element = element;
onClick = function() {
console.log('click happend');
};
this.element.addEventListener('click', onClick.bind(this));
};
[...document.querySelectorAll('.edit')].forEach(
function (element, index) {
new XXX.ClickMe(element);
}
);
XXX.PrototypeTemplate = function(element) {
this.element = element;
var tmpl = this.element.getAttribute('data-prototype');
addBox = function() {
this.element.insertAdjacentHTML('beforebegin', tmpl);
};
this.element.addEventListener('click', addBox.bind(this));
};
[...document.querySelectorAll('[data-prototype]')].forEach(
function (element, index) {
new XXX.PrototypeTemplate(element);
}
);
[data-prototype] {
cursor: pointer;
}
<div class="box"><a class="edit" href="#">Edit</a></div>
<span data-prototype="<div class="box"><a class="edit" href="#">Edit</a></div>">Add box</span>
This Q/A is useful information लेकिन यह कैसे समस्या को हल करने पर मेरे सवाल का जवाब नहीं है। मैं उन तत्वों के लिए new XXX.ClickMe(element);
जैसे ईवेंट लिस्टनर को कैसे शुरू कर सकता हूं जैसे डीओएम में गतिशील रूप से डाला गया?
की संभावित डुप्लिकेट [डोम घटना प्रतिनिधिमंडल क्या है?] (Https://stackoverflow.com/questions/1687296/what-is-dom-event-delegation: एक आकर्षण की तरह काम करता है) –