2012-01-27 12 views
6

I सोचें कि ईवेंट हैंडलर को पंजीकृत होने के क्रम में संसाधित किया जाता है। (क्या यह सही है?) यदि ऐसा है तो अगर मैं अपनी स्क्रिप्ट की शुरुआत में एक ईवेंट हैंडलर संलग्न करता हूं, तो क्या मैं पूरी तरह से निश्चित हो सकता हूं कि यह उसी ईवेंट से जुड़े हैंडलर से पहले आग लग जाएगा? घटना नामस्थानों पर भी इसका कोई प्रभाव पड़ता है? क्या ईवेंट हैंडलर श्रृंखला में फंस गए हैं (एक से पहले खत्म होता है) या समानांतर में?सुनिश्चित करें कि jQuery ईवेंट हैंडलर निष्पादन आदेश

मैं ऐसा करना चाहता हूं क्योंकि मेरी स्क्रिप्ट व्यूपोर्ट आकार पर निर्भर करती है, जो आकार बदलने पर घटना में बदलती है, और मुझे लगातार इसकी तलाश करने की आवश्यकता है। मेरे प्रत्येक हैंडलर फ़ंक्शंस में बार-बार $(window).width() पर कॉल करने के बजाय, मैं अपनी स्क्रिप्ट के शीर्ष पर एक हैंडलर रखना चाहता हूं जो $(window).width() को प्रत्येक आकार में ऑब्जेक्ट प्रॉपर्टी में सहेजता है। फिर बाद के हैंडलरों में मैं संपत्ति तक पहुंच सकता हूं और यह सुनिश्चित कर सकता हूं कि यह सबसे हालिया माप है।

मुझे पता है कि मैं एक कस्टम इवेंट बना सकता हूं जो गणना के तुरंत बाद ट्रिगर करता है और बाद के हैंडलर को कस्टम ईवेंट में संलग्न करता है। लेकिन, मैं ऐसा नहीं करना चाहता क्योंकि मुझे प्लगइन के साथ इंटरऑपरेबिलिटी बनाए रखने की ज़रूरत है जो मेरे बाद आती है जो आकार बदलने की घटना से जुड़ी हो सकती है।

+1

देखें http://stackoverflow.com/questions/290254/how-to-order-events-bound-with-jquery – ustun

+0

क्या आप '$ (विंडो) .width()' में महत्वपूर्ण प्रदर्शन खो रहे हैं? यदि नहीं, तो परेशान क्यों? आप वैश्विक वैरिएबल की स्थिति पर एक नाजुक निर्भरता पेश करेंगे। – millimoose

+0

@Inerdial मुझे इसे और कुछ अन्य गणनाओं को 20 बार कॉल करने की आवश्यकता है। मुझे लगता है कि इससे कोई फर्क पड़ेगा। – ryanve

उत्तर

4

यदि आप किसी अन्य स्क्रिप्ट को चलाने से पहले अपने ईवेंट हैंडलर को संलग्न करते हैं (यहां तक ​​कि केवल एक प्लगइन), तो आपका कॉलबैक हमेशा पहले आग लग जाएगा।

आप डेटा वस्तु के माध्यम से ईवेंट हैंडलर्स की सरणी का निरीक्षण कर सकते हैं:

$(window).data('events'); 

नोट: यह एक गैर प्रलेखित दृष्टिकोण है और अंत में काम न करे। केवल निरीक्षण के लिए इसका इस्तेमाल करें।

+0

एक तरफ खेद है, क्या शुद्ध जावास्क्रिप्ट के साथ इसका उपयोग करने का कोई तरीका है? –

+3

@ AndréAlçadaPadez - नहीं। इतना ही नहीं, यह केवल आपको ईवेंट हैंडलर देगा जो आपने jQuery का उपयोग करके संलग्न किया है। –

+1

धन्यवाद, मुझे जावास्क्रिप्ट घटनाओं के साथ बहुत परेशानी हो रही है :) –

संबंधित मुद्दे