jQuery के click
(और साथ ही अन्य पुस्तकालयों 'घटना कपोल-कल्पना से ज्यादातर के रूप में) का उपयोग करता है मानक DOM L2 addEventListener
या MSHTML मालिकाना (और बाद में ओपेरा की तरह, कुछ अन्य ब्राउज़र द्वारा की नकल की) attachEvent
, जब addEventListener
उपलब्ध नहीं है।
यदि न तो addEventListener
, attachEvent
मौजूद नहीं हैं (जैसा कि कुछ प्राचीन ब्राउज़रों के मामले में है), jQuery कुछ भी नहीं (1.4a2 के रूप में) करता है।
onclick="..."
आपके दूसरे उदाहरण से intrinsic event attribute कहा जाता है, और HTML 4.01 में परिभाषित किया गया है। ऐसी घटना विशेषता का मान किसी ईवेंट हैंडलर का फ़ंक्शन बॉडी बन जाता है। जब घटना होती है, तो इस हैंडलर फ़ंक्शन को पहले तर्क के रूप में event
के साथ बुलाया जाता है; फ़ंक्शन स्कोप चेन भी usually augmented है जिसमें तत्व के कुछ पूर्वजों और तत्व शामिल हैं।
आंतरिक घटना विशेषता के लाभों व्यापक ब्राउज़र समर्थन और यकीनन बेहतर प्रदर्शन है। मुझे घटना विशेषताओं के परीक्षण देखने को याद है जिसके परिणामस्वरूप addEventListener
/attachEvent
के माध्यम से शुरू की गई तुलना में बहुत कम मेमोरी खपत होती है। मैं इस समय उन परीक्षणों को नहीं ढूंढ सकता।
attachEvent
से परहेज करके, आप स्वाभाविक रूप से आईई में मेमोरी लीक से बचते हैं। अधिकांश लोकप्रिय जावास्क्रिप्ट पुस्तकालय वास्तव में अपने ईवेंट अबास्ट्रक्शन में परिपत्र संदर्भ बनाते हैं, और फिर आईई में पेज अनलोड पर क्लीन अप करने के लिए मजबूर होते हैं। जाहिर है, जब आप attachEvent
पर भरोसा करते हैं तो ईवेंट की स्थिति से बचने पर ये समस्याएं गायब हो जाती हैं।
घटना की कमियां जिम्मेदार बताते हैं, हालांकि, पुनर्प्रयोग की कमी, चिंताओं के तोड़ने जुदाई और मार्कअप प्रदूषण है (दोनों को प्रभावित करने वाले - दस्तावेज़ के आकार, और उसके रख-रखाव)। याद रखें कि इवेंट विशेषता से तर्क लगातार क्लाइंट में स्थानांतरित हो जाता है, बाहरी स्क्रिप्ट का हिस्सा होने के बजाय जिसे एक बार डाउनलोड किया जाता है और कैश किया जाता है। संवर्धित दायरे पर फिसलने का मौका भी है।
मैं को सलाह देता हूं कि ईवेंट विशेषताओं से बचें, जब तक कि बिल्कुल जरूरी न हो।
कुछ कहना है कि "जावास्क्रिप्ट घटनाओं को बाध्य करने के लिए एक ढांचे का उपयोग करना हमेशा बेहतर होता है" - यदि आप सामान्य प्रयोजन लाइब्रेरी का उपयोग कर रहे हैं जैसे कि jQuery के लिए तो आप अपने उपयोगकर्ताओं को लोड चीजों को डाउनलोड करने के लिए मजबूर कर रहे हैं उन्हें जरूरत नहीं है। इसके अलावा, बाध्यकारी घटनाएं बस इतना कठिन नहीं है। और मैं नहीं कहूंगा कि "अविभाज्य" तरीके का उपयोग करना हमेशा बेहतर होता है। –
अला पर भी [व्यवहारिक पृथक्करण] [1] लेख देखें। [1]: http://www.alistapart.com/articles/behavioralseparation/ –