जब ब्राउज़र एक डोम घटना के परिणाम के रूप में एक समारोह कॉल, जावास्क्रिप्ट कि कार्य करने के लिए एक वस्तु से गुजरता है जो घटना के बारे में जानकारी शामिल है। लेकिन यह दूसरों की तुलना में आईई में थोड़ा अलग काम करता है। सभी ब्राउज़रों में काम करने के लिए, foo()
एक तर्क * (मैं e
का उपयोग करें) लेना चाहिए:
function foo(e) {
var sender = (e && e.target) || (window.event && window.event.srcElement);
//sender is the DOM element which was clicked
alert(sender.href); //assumes the clicked element was an <a>
}
पहली पंक्ति "प्रेषक" तत्व है जो सभी ब्राउज़रों में घटना की उत्पत्ति का मूल्य प्रदान करेंगे।
अब, अगर आपके <a>
और में से एक (उदाहरण के लिए, एक छवि के लिए) बच्चे तत्व शामिल हैं उन वास्तविक तत्व क्लिक करें, फिर उस तत्व "प्रेषक" बन जाएगा था। यदि यह एक संभावना है, आप जब तक आप अपने लिंक मिल प्रेषक से डोम ऊपर चलने के लिए की जरूरत है:
function foo(e) {
var sender = (e && e.target) || (window.event && window.event.srcElement);
//sender is the DOM element which was clicked
var myEle = sender;
//find the parent node until we hit the <a>
while(myEle.tagName.toUpperCase() != 'A') {
myEle = myEle.parentNode;
}
//myEle is now the <a>. sender is still the originator.
alert(myEle.href);
}
* आप भी कार्य करने के लिए पारित किसी भी तर्क का उपयोग कर सकते, भले ही वे घोषित नहीं कर रहे हैं, का उपयोग करके arguments[]
सरणी।
स्रोत
2009-05-06 21:53:03
मैं tirnary से अधिक को शॉर्ट पसंद कभी कभी, अपने आप को ||: यह एक ठीक करने के लिए मूल संदर्भ के लिए समारोह कॉल बाध्य कर सकते हैं ई।लक्षित कर; – Tracker1
@cresentfresh onclick अर्थात् गलत और अत्यंत लचीला है। प्रगतिशील वृद्धि तकनीक देखें। –