window.event
डेटा मूल्य नहीं है लेकिन ईवेंट ऑब्जेक्ट्स बनाने के लिए गेटर फ़ंक्शन है। डीओएम गुणों के अधिकांश की तरह डेटा मान नहीं बल्कि एक्सेसर फ़ंक्शंस हैं। वैसे भी
div.onclick = function() {
var a = window.event;
var b = window.event;
alert(a === b) // false
};
, बस अपने खुद के कार्य करना:
तुम भी उन्हें अगले एक दूसरे के लिए क्या कर सकते हैं
window.getEvent = (function() {
var e = {};
return function() {
var cur = window.event;
if(cur.type === e.type &&
cur.srcElement === e.srcElement &&
cur.clientX === e.clientX &&
cur.clientY === e.clientY &&
cur.keyCode === e.keyCode) {
return e.evt;
}
e.type = cur.type;
e.srcElement = cur.srcElement;
e.clientX = cur.clientX;
e.clientY = cur.clientY;
e.keyCode = cur.keyCode;
e.evt = cur;
return cur;
};
})();
myinnerdiv.onclick = function() {
var event = getEvent();
event.myCustomProp = 3;
};
myparentdiv.onclick = function() {
var event = getEvent();
alert(event.myCustomProp === 3);
};
यह मानता है कि इन 5 मूल्यों को देखने के लिए पर्याप्त हैं अगर घटना वस्तुओं एक ही घटना का प्रतिनिधित्व करें, जो मुझे उचित लगता है।
Test page here, संक्षेप में, पाठ 'asd' (लाल रंग) पर क्लिक करें रूप में एचटीएमएल है:
<div id="myparentdiv">
daa
<div id="myinnerdiv">asd</div>
daa
</div>
आप तो बस jQuery का उपयोग कुछ है कि यकीन है कि के लिए काम करता चाहते हैं, आप मूल रूप से एक पूरे बनाने के लिए स्क्रैच से इवेंट मॉडल इसे और अधिक साफ करने के लिए (और हमेशा उस ईवेंट मॉडल के एपीआई का उपयोग करें)।
यह एक वस्तु है, यदि आप इसे का विस्तार करना चाहते हैं, तो बस करो: 'ev.mySuperSpecialInfo = 42;'। इससे भी बेहतर, राज्य को स्टोर करने के लिए अपने सिस्टम का उपयोग करें। 'var eventState = 'पहुंचे माता-पिता';' – davin
जैसा कि मैंने कहा था ev.mySuperSpecialInfo myparentdiv में प्रेषित नहीं है, क्योंकि वे दो पूरी तरह से अलग ऑब्जेक्ट्स हैं –
मैंने सोचा कि आप दूसरे संस्करण का उपयोग कर रहे हैं? अगर नहीं, तो भी आपको करना चाहिए। – davin