2012-04-28 17 views
13
elemen.addEventListener('click',func,false); 
elemen.addEventListener('click',func,false); 

क्या funcelemen पर क्लिक करने पर दो बार बुलाया जाएगा?वही addEventListener काम करेगा?

यदि हां ... क्या जांच करने का कोई समाधान है क्या एक ही ईवेंट श्रोता elemen पर मौजूद है?

उत्तर

23

funcनहीं क्लिक पर दो बार बुलाया जाएगा, नहीं; लेकिन विवरण और एक "गेटचा" के लिए पढ़ना जारी रखें।

कल्पना में addEventListener से:

से अधिक समान EventListeners समान पैरामीटर डुप्लिकेट उदाहरणों छोड़ दिए जाते हैं के साथ एक ही EventTarget पर पंजीकृत कर रहे हैं। वे EventListener को दो बार बुलाए जाने का कारण बनते हैं और चूंकि उन्हें छोड़ दिया जाता है, उन्हें removeEventListener विधि से हटाया जाने की आवश्यकता नहीं है।

(मेरे जोर)

यहाँ एक उदाहरण है:

var target = document.getElementById("target"); 
 

 
target.addEventListener("click", foo, false); 
 
target.addEventListener("click", foo, false); 
 

 
function foo() { 
 
    var p = document.createElement("p"); 
 
    p.innerHTML = "This only appears once per click, but we registered the handler twice."; 
 
    document.body.appendChild(p); 
 
}

यह ध्यान रखें, हालांकि, कि यह वही कार्य हो गया है महत्वपूर्ण है , केवल एक समारोह नहीं है जो एक ही काम करता है। उदाहरण के लिए, यहाँ मैं चार अलग-अलग कार्यों को hooking हूँ तत्व है, जो सभी को बुलाया जाएगा करने के लिए:

var target = document.getElementById("target"); 
 

 
var count; 
 
for (count = 0; count < 4; ++count) { 
 
    target.addEventListener("click", function() { 
 
    var p = document.createElement("p"); 
 
    p.innerHTML = "This gets repeated."; 
 
    document.body.appendChild(p); 
 
    }, false); 
 
}
<input type="button" id="target" value="Click Me">

क्योंकि हर पाश यात्रा, पर एक अलग समारोह बनाई गई है है कि (भले ही कोड एक जैसा है)।

+0

मैं ओपी नहीं हूं लेकिन इस जवाब ने मुझे बहुत मदद की। धन्यवाद !! –