2011-07-28 13 views
16

तैयार फंक्शन $(function(){...}); के साथ jquery कोडिंग शुरू करने और तैयार किए गए सभी कार्यों को तैयार करने के लिए तैयार किए गए कार्यों को घोषित करने की आदत में प्राप्त हुआ है।

तब मुझे एहसास हुआ कि कार्यों के लिए तैयार समारोह में डाल के कुछ शायद वहाँ की जरूरत नहीं थी।

उदाहरण के लिए, सरल दस्तावेज़ तैयार में घटनाओं द्वारा इस्तेमाल किया कार्यों इसके बाहर घोषित किया जा सकता:

function checkEmail(objelement){ 
    var emailRx = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    return emailRx.test(objelement.val()) ? true : false; 
} 

तो यह के अंदर इस्तेमाल किया:

//code snippet for example 

$(function(){ 

$("form[name='contactform']").submit(function(){ 
    $("input[type=text]").each(function(){ 
     if($(this).attr("id") == "email" && !checkEmail($(this))) { 
      $(this).prev().css("color","red"); 
     } 
    }); 
}); 

}); 

मैं कई अतः पिछले प्रश्न के माध्यम से खोज की है और एक जवाब नहीं मिल सका।

बेहतर, बुरा, या तैयार के बाहर कार्यों की घोषणा करने के अलग अलग इस तरह से नहीं है?

उत्तर

15

यदि आप उन्हें बाहर घोषित करते हैं, तो इसका मतलब यह है कि वे वैश्विक दायरे में मौजूद हैं।

इसका एक लाभ यह है कि उन्हें दस्तावेज़ के बाहर पुन: उपयोग किया जा सकता है। पहले से ही फ़ंक्शन। एक नुकसान यह है कि वे वैश्विक नामस्थान को अव्यवस्थित करते हैं (यदि आप चाहें तो नामस्थान द्वारा इसे टाला जा सकता है)।

व्यक्तिगत रूप से, अगर मैं उनका पुन: उपयोग करने जा रहा हूं, तो वे बाहर जाते हैं। अगर उन्हें एक चर या कुछ और संदर्भित करने की आवश्यकता है जो केवल मेरे डोमेड हैंडलर के दायरे में मौजूद होगा, तो वे अंदर जाते हैं (आमतौर पर अज्ञात फ़ंक्शन के रूप में)।

हाल ही में, मैं डोमरेड हैंडलर के बाहर जो भी कर सकता हूं, वह सब कुछ डाल रहा हूं क्योंकि दुभाषिया को हैंडलर को निष्पादित करने से पहले और अपने डोमेडी हैंडलर प्रकार के हार के निष्पादन में देरी से पहले डोमेडी हैंडलर के भीतर सभी फ़ंक्शन घोषणाओं को पार्स करना है। उद्देश्य (उस समय कितना नगण्य है इस पर ध्यान दिए बिना)।

0

कार्यों को तैयार या किसी भी लोड घटना के बाहर हमेशा घोषित किया जाना चाहिए। लेकिन आपको यह सुनिश्चित करना चाहिए कि कोड निष्पादन में किसी भी त्रुटि से बचने के लिए आप उनका उपयोग करने से पहले कार्यों को घोषित कर दें।

+1

पेज हेडर में घोषित सभी फ़ंक्शन उपलब्ध होंगे जब $ (दस्तावेज़) .ready() ईवेंट आग लगती है। – BonyT

+2

इससे भी महत्वपूर्ण बात कार्यों जावास्क्रिप्ट में एक गुंजाइश के अंदर कहीं भी घोषित पूर्ण दायरे में सुलभ हो जाएगा (हाँ आप एक समारोह कॉल और के बाद यह लाइन की घोषणा कर सकता है) डाल कि बेहतर की तुलना में मेरे –

+0

+1 समय के अंत – BonyT

6

बेहतर

आपका कोड को पढ़ने के लिए आसान हो जाएगा।

याद रखें $(document).ready() सिर्फ एक समारोह भी है।

कोई भी चीज जो अप पैक किया जा सकता है और डाल एक संभावित पुन: प्रयोज्य समारोह कॉल में होना चाहिए। इस तरह से इसके बारे में

सोचें ... आप भी ऐसा ही होगा यदि आप एक बटन के क्लिक करें घटना के साथ काम कर रहे थे?

+0

@VirtualBlackFox मैं जब तक इस वोट दें करना चाहते हैं के लिए – Matt

+0

जब मैं अपने कोड की बात करता हूं तो मैं एक साफ सनकी हूं और वास्तव में मुझे पहले स्थान पर कार्यों को स्थानांतरित करने के लिए प्रेरित किया गया है। +1 –

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