2012-06-10 9 views
8

मैं कई लोगों को अगर किसी DOM तत्व, एक घटना असाइन करने से पहले से मौजूद है (उदाहरण के लिए coffeescript) देखने के लिए जाँच देखें:क्या हमें जांच करनी चाहिए कि ईवेंट आवंटित करने से पहले तत्व मौजूद है या नहीं?

$ -> 
    if($("#progressbar").length > 0) 
     $("#progressbar").progressbar(value: 0) 

यह आवश्यक है? अगर हम वैसे भी ईवेंट जोड़ते हैं, चाहे तत्व मौजूद है या नहीं, क्या कोई प्रदर्शन हिट है?

+2

कि jQuery है? –

+0

मुझे लगता है कि आपको पहले एक त्रुटि मिलेगी, नहीं? – thescientist

+0

इसे कॉफ़ीस्क्रिप्ट से सीधे जावास्क्रिप्ट में परिवर्तित कर दिया गया है। मुझे लगता है कि त्रुटि प्रकट नहीं होती है क्योंकि यह घटना उपयोगकर्ता इंटरैक्शन के बिना लोड की जाती है (नीचे गैब्रियलहिल का जवाब देखें)। –

उत्तर

12

jQuery में प्रत्येक विधि कॉल .each फ़ंक्शन में लपेटा गया है, इसलिए यदि कोई तत्व मौजूद है तो जांचना आम तौर पर आवश्यक नहीं है - सेट खाली होने पर बुलाए गए फ़ंक्शन का कोई पुनरावृत्ति नहीं होगा, यह चुपचाप विफल हो जाता है। दिया गया उदाहरण इसका एक अच्छा उदाहरण है, सीधे $('#progressbar').progressbar() पर कॉल करने में कोई हानि या प्रदर्शन जुर्माना नहीं है।

जब आप कि क्या करना चाहते हैं, शायद इसलिए कि आप डोम में हेरफेर करने या कुछ महंगा एक तत्व की उपस्थिति के आधार पर कार्रवाई करते समय होते हैं, तो , सुनिश्चित करें कि आप कॉल कैश, विशेष रूप से अगर यह एक जटिल चयनकर्ता है बनाने:

specialThings = $('section .special') 

if specialThings.length > 0 
    doStuffWith specialThings 

या वैकल्पिक रूप से, coffeescript के वर सुरक्षा का लाभ लेने:

if (specialThings = $ 'section .special').length 
    doStuffWith specialThings 
+0

यह समझ में आता है, धन्यवाद! –

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

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