http://jsfiddle.net/walkerneo/QqkkA/जावास्क्रिप्ट घटना प्रतिनिधिमंडल, क्लिक किए गए तत्वों के माता-पिता को संभालने?
मैं यहाँ कई सवाल देखा है या तो के बारे में पूछ या जावास्क्रिप्ट में घटना प्रतिनिधिमंडल के साथ उत्तर दिया जा रहा है, लेकिन मैं अभी तक है को देखने के लिए, तथापि, कैसे घटना प्रतिनिधिमंडल तत्वों है कि होने के लिए नहीं जा रहे हैं के लिए उपयोग करने के लिए क्लिक घटना के लक्ष्य।
उदाहरण के लिए:
HTML:
<ul>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
</ul>
सीएसएस:
ul{
padding:20px;
}
li{
margin-left:30px;
margin-bottom:10px;
border:1px solid black;
}
.d{
padding:10px;
background:gray;
}
क्या होगा यदि मैं ताकि उन पर क्लिक कर रहे हैं li
तत्वों को संभालने के लिए एक क्लिक करें घटना जोड़ना चाहते हैं? अगर मैं ul
तत्व पर इवेंट हैंडलर संलग्न करता हूं, तो div
एस हमेशा लक्षित तत्व होंगे। एक क्लिक फ़ंक्शन में लक्ष्य तत्व के प्रत्येक अभिभावक की जांच करने के अलावा, मैं इसे कैसे पूरा कर सकता हूं?
संपादित करें:
मैं के बजाय घटना प्रतिनिधिमंडल का उपयोग करना चाहते:
var lis = document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){};
}
लेकिन अगर मैं कार्य करें:
document.getElementsByTagName('ul')[0].addEventListener('click',function(e){
// e.target is going to be the div, not the li
if(e.target.tagName=='LI'){
}
},false);
संपादित करें: मैं कैसे उपयोग करने के लिए कोई दिलचस्पी नहीं हूँ इस के लिए जावास्क्रिप्ट पुस्तकालय, मुझे दिलचस्पी है कि वे इसे कैसे करते हैं और यह शुद्ध जेएस के साथ कैसे किया जा सकता है।
var list = document.getElementsByTagName('ul')[0]
list.addEventListener('click', function(e){
var el = e.target
// walk up the tree until we find a LI item
while (el && el.tagName !== 'LI') {
el = el.parentNode
}
console.log('item clicked', el)
}, false)
यह बेहद सरल है, पाश भी यूएल तत्व के बाद कुछ पेड़ पर बने रहेंगे:
वास्तव में आपके प्रश्न के बारे में उलझन में, यह समझ में नहीं आया कि आप क्या हासिल करना चाहते हैं। –
मैं हमेशा इस पर खराब हो जाता हूं ... यह लिंक मदद कर सकता है: http://www.quirksmode.org/js/events_order.html –
@ मिचल, यह अक्षम था, मैं सोच रहा था कि यह एकमात्र तरीका है या नहीं। – mowwwalker