2010-01-15 17 views
18

आपके द्वारा देखी गई JQuery खराब/सबसे खराब प्रथाएं क्या हैं, लिखित या चीज़ से बचा जाना चाहिए?Jquery खराब प्रथाओं

+1

मुझे पता है कि मैंने पहले ही टिप्पणी की है, लेकिन यह सवाल एक सटीक डुप्लिकेट है: http://stackoverflow.com/questions/1229259/jquery-pitfalls-to-avoid –

उत्तर

30

एक चीज जो आपको टालना चाहिए, एक बार फिर से प्रत्येक पंक्ति में "उपयोग करने में आसान" चयनकर्ताओं का उपयोग करना है, क्योंकि चयनकर्ताओं का जावास्क्रिप्ट कार्यान्वयन कुशल नहीं है। बेशक, jquery लोग इसे अनुकूलित कर रहे हैं, हालांकि मुझे लगता है कि आपको जितना संभव हो उतना छोटा उपयोग करना चाहिए।

तो, यह एक बुरा अभ्यास है।

$("li ul span").show(); 
$("li ul span").toggleClass("bubu"); 

श्रृंखलन अच्छा है

$("li ul span").show().toggleClass("bubu"); 

और एक स्थानीय चर में चीजों को याद भी बुरा नहीं है:

var allspans = $("li ul span"); 
allspans.show(); 
allspans.toggleClass("bubu"); 
+0

हाँ, बहुत से लोग ऐसा करते हैं। प्रदर्शन के लिए यह बहुत बुरा है। चेनिंग और स्थानीय चर को इंगित करने के लिए – jerone

+0

+1! –

2

फिर भी पुराने दस्तावेज़ तैयार समारोह का उपयोग कर:

$("document").ready(function(){ }); 
बहुत कम कॉम के बजाय

सोम:

$(function(){ }); 

यह वास्तव में बुरा नहीं है, लेकिन मैं लोगों को नए एपीआई के साथ नहीं उठता दिखाता हूं।

+13

'$ (दस्तावेज़) का उपयोग करना .ready (...) 'अक्सर कोड को स्पष्ट रूप से स्पष्ट करने के लिए उपयोग किया जाता है। बेशक इसकी जरूरत नहीं है, लेकिन यह शायद ही कभी एक बुरा अभ्यास आईएमओ है। –

+1

मैंने यही कहा। :) – jerone

+1

क्या आप समझा सकते हैं, मुझे ऐसा क्यों करना चाहिए?मुझे लगता है, पहला संस्करण अधिक समझ में आता है - हम एक ईवेंट हैंडलर को दस्तावेज़ ऑब्जेक्ट से जोड़ रहे हैं। दूसरा .. यहां तक ​​कि यह शायद बेहतर काम करता है .. खुद को समझा नहीं है। – naivists

17

वहाँ दो कि मैं बहुत कुछ देख रहे हैं:

पहले, एक क्लिक घटना में, id इस तरह से पहुंचा जाता है:

$("a").click(function(e){ 
    var id = $(this).attr('id'); 
}); 

कि डोम के चारों ओर एक नई jQuery वस्तु बनाता है नोड, और एक फ़ंक्शन कॉल करता है।

$("a").click(function(e){ 
    var id = this.id; 
}); 

नोट:: निम्नलिखित सही तरीका है आप भी $(this).attr('href') देखेंगे कि है, लेकिन है कि क्योंकि जिस तरह से jQuery ब्राउज़रों में यह सामान्य हो की सही है।

दूसरा jQuery कॉल की scope पैरामीटर में एक डोम नोड के अलावा कुछ गुजर रहा है:

$(".child", $(".parent")).doSomething(); 
// or 
$(".child", ".parent").doSomething(); 

बिल्कुल ऐसा करने से कोई गति लाभ नहीं है।

$('div').click(function(){ 
    $('img', this).doSomething(); // This is good 
}); 
5

जेम्स Padolsey jQuery कोड बदबू आ रही है पर an excellent article लिखा है: आप कहाँ रफ्तार वृद्धि दिखाई देती है, आप पहले से ही डोम तत्व है जब है। मैं इसे पढ़ने की सलाह देते हैं।

+0

यह एक अच्छा लेख है – Anurag