2010-06-08 11 views
8

में एक jQuery सर्वोत्तम प्रथाओं के प्रश्न में "वर्जित" क्या है।jQuery: सादे जावास्क्रिप्ट

मैं एक बहुत ही jQuery गहन वेब पेज लिख रहा हूं। मैं jQuery के लिए नया हूं और इसकी शक्ति देखता हूं, लेकिन जैसा कि मैं भारी जावास्क्रिप्ट अनुभव और ज्ञान के साथ आता हूं, मेरा सवाल है: jQuery में क्या किया जाना चाहिए और सादे जावास्क्रिप्ट में क्या किया जाना चाहिए।

उदाहरण के लिए, कॉलबैक हैं जो एक सादा DOM ऑब्जेक्ट को तर्क के रूप में भेजते हैं। क्या मुझे इसका उपयोग करना चाहिए या मुझे इसे लपेटना चाहिए (जैसे $(this))।

क्या इससे कोई फर्क पड़ता है कि मैं यह करता हूं। X = y या $ (this) .attr ("x", y)।

+2

.attr() HTML विशेषताओं के लिए है ... this.x ऐसा काम नहीं करता है। आप उस तरह से डोम गुणों को संशोधित कर सकते हैं, लेकिन इसके लिए कई उपयोग नहीं हैं। – colinmarc

उत्तर

4

यदि आपके फ़ंक्शन को DOM ऑब्जेक्ट प्राप्त होता है और आपको उस DOM ऑब्जेक्ट के लिए किसी भी jQuery कार्यक्षमता की आवश्यकता नहीं है, तो उसे किसी jQuery ऑब्जेक्ट में कनवर्ट करने की आवश्यकता नहीं है। उदाहरण के लिए, यदि आपको चेकबॉक्स ऑब्जेक्ट प्राप्त होता है, तो आप jQuery के किसी भी प्रयोग के बिना checked संपत्ति की जांच कर सकते हैं।

हालांकि, अगर आपको लगता है कि चेकबॉक्स से एक अलग तत्व नेविगेट करने की आवश्यकता है, यह इसके कन्वर्ट करने के लिए सार्थक हो सकता है:

jQuery (के रूप में अन्य पुस्तकालयों करते हैं) देशी जे एस के साथ आसानी से मिश्रण। यदि आपको अतिरिक्त कार्यक्षमता की आवश्यकता है, तो ऑब्जेक्ट को प्रश्न में बढ़ाएं।

आपके अंतिम प्रश्न के लिए: आपको data गैर-मानक DOM विशेषताओं से बचने के लिए उपयोगी फ़ंक्शन मिल सकता है। यदि आपकी संपत्ति में आपकी संपत्ति x वास्तव में एक वैध डोम विशेषता है, तो आप this.x = y या $(this).attr('x', y) लिख सकते हैं, आईएमओ इससे कोई फर्क नहीं पड़ता। हालांकि, अगर x DOM विशेषता नहीं है,

$(this).data('key', value) 

इस तरह उपयोग करते हैं, आप डोम तत्व है, जहां value एक मनमाना आदिम मूल्य या वस्तु हो सकता है के साथ मनमाना कुंजी-मान जोड़ों स्टोर कर सकते हैं।

3

मुझे लगता है कि यह एक निर्णय कॉल है। अपनी सामान्य समझ का प्रयोग करें।

उदाहरण के लिए, यदि आप 1000 div के है पृष्ठ पर, तो आप शायद नहीं $ के अंदर यह रैप करने के लिए (..) चाहेगा

$('div').click(function() { 
    this.id = Random.guid(); // instead of $(this).attr('id', Random.guid()); 
}); 

अन्य कार्य के लिए के रूप में, जब तक कि आप क्या समझते हैं jQuery कर रहा है, आप बस स्थिरता के लिए इसके साथ रह सकते हैं, लेकिन उपरोक्त उदाहरण में प्रदर्शन मुद्दों के बारे में जागरूक रहें।

जैसा कि @colinmarc उल्लेख करता है, कभी-कभी jQuery तत्व गुणों और ऑब्जेक्ट गुणों के बीच भेद को धुंधला करता है जो भ्रामक और छोटी गाड़ी हो सकती है।

0

जब आप jQuery का उपयोग करते हैं, तो यह हमेशा jQuery का एक उदाहरण देता है जब तक आप obv को फ़ंक्शन जैसे वैल();

हम इस कारण के बजाय $ (इस) .value का उपयोग करने का कारण यह सुनिश्चित करना है कि यह jQuery का एक उदाहरण है।

यदि आपके कोड में कहीं भी आप एक चर सेट करते हैं जिसे my_link चुड़ैल कहा जाता है, तो एक DOM ऑब्जेक्ट के बराबर होता है और एक jQuery फ़ंक्शन नहीं .. आपके एप्लिकेशन में my_link.val() में एक त्रुटि होगी, लेकिन $ (my_link) करके .val() आपको आश्वस्त करेगा कि फ़ंक्शन वैल उपलब्ध होगा। क्योंकि $() jquery का एक उदाहरण देता है।

मेरी पिछली पोस्ट में मिस समझ के लिए खेद है।

+1

मुझे नहीं पता कि यह प्रश्न के लिए कोई प्रासंगिक कैसे है। – Anurag

+0

क्षमा करें मैं मूल रूप से प्रश्न समझ गया याद आती है। – RobertPitt

0

चूंकि jQuery ऑब्जेक्ट्स प्रकृति जेएस डोम नोड्स की तुलना में समृद्ध कार्यक्षमता रखते हैं, यदि आप बाड़ पर हैं, तो आप jQuery में भी लपेट सकते हैं। JQuery इतना हल्का है, jQuery ऑब्जेक्ट्स का उपयोग न करने का वास्तव में बहुत अधिक कारण नहीं है।

क्या इससे कोई फर्क पड़ता है कि मैं यह करता हूं। X = y या $ (this) .attr ("x", y)।

देशी थोड़ा तेजी से होगा, लेकिन आप शायद अन्य code-- डोम ट्रेवर्सल या इमारत में अधिक समय बिताना होगा। इस विशिष्ट उदाहरण में, पूर्व अधिक संक्षेप में है, इसलिए मैं इसे चुनूंगा। चूंकि jQuery बहुत हल्का है, इसलिए मैं तरलता से आगे और पीछे स्विच करता हूं। एक क्लिक के संचालक की तरह, आप API-- आम तौर पर एक डोम नोड का पालन करना होगा

  • कॉलबैक के लिए,:

    यहाँ अन्य दिशा-निर्देशों का पालन करें हम कर रहे हैं। कोड जो आप लिखते हैं वह समान है, शायद डीओएम नोड्स को भी लेना चाहिए। लेकिन अगर आपके पास वस्तुओं की एक सूची है, तो हमेशा एक jQuery ऑब्जेक्ट का उपयोग करें।

  • अधिकतर कोड के लिए, मैं यह देखने का प्रयास करता हूं कि आप कोड को jQuery प्लगइन के रूप में बना सकते हैं - डीओएम नोड्स के सेट में कुछ परिवर्तन लागू कर रहे हैं। यदि आप ऐसा कर सकते हैं, तो आपको प्लगइन आर्किटेक्चर से कुछ मार्गदर्शन प्राप्त होगा।
  • मैं jQuery की बाइंड/ट्रिगर तंत्र का उपयोग करता हूं क्योंकि यह काफी लचीला और कम युग्मन है।
  • सीधे कोड रखने के लिए, मैं एक डॉलर के हस्ताक्षर के साथ jQuery ऑब्जेक्ट उपसर्ग नाम की सिफारिश करता हूं। उदाहरण के लिए, var $this = $(this);। यद्यपि यह वास्तव में $() को कॉल करने का कोई बड़ा सौदा नहीं है, लेकिन यदि आप इसे बहुत अधिक कहते हैं तो यह एक मैला दिख रहा है।

उम्मीद है कि इससे मदद मिलती है।

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