ऐसा लगता है कि अधिकांश दिलचस्प और महत्वपूर्ण सुझावों का पहले ही उल्लेख किया गया है, इसलिए यह एक छोटा सा जोड़ है।
छोटी सी टिप jQuery.each (ऑब्जेक्ट, कॉलबैक) फ़ंक्शन है। हर कोई शायद jQuery.each (कॉलबैक) फ़ंक्शन का उपयोग कर रहा है, क्योंकि यह स्वाभाविक है। JQuery.each (ऑब्जेक्ट, कॉलबैक) उपयोगिता फ़ंक्शन ऑब्जेक्ट और सरणियों पर पुनरावृत्त करता है। एक लंबे समय के लिए, मैंने किसी तरह यह नहीं देखा कि यह एक अलग वाक्यविन्यास के अलावा क्या हो सकता है (मुझे सभी फैशनेबल छोरों को लिखने में कोई आपत्ति नहीं है), और मैं थोड़ा शर्मिंदा हूं कि मुझे इसकी मुख्य ताकत का एहसास हाल ही में हुआ।
बात यह है कि चूंकि jQuery.each (ऑब्जेक्ट, कॉलबैक) में लूप का शरीर एक फ़ंक्शन है , इसलिए आपको लूप में हर बार एक नया स्कोप मिलता है जो लूप में क्लोजर बनाते समय विशेष रूप से सुविधाजनक होता है ।
दूसरे शब्दों में, एक सामान्य सामान्य गलती कुछ ऐसा करना है:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
अब, जब आप functions
ऐरे में फंक्शन्स को इनवॉइस करते हैं, तो आपको उस कंटेंट के साथ तीन बार अलर्ट मिलेगा, undefined
जो संभवत: वह नहीं है जो आप चाहते थे। समस्या यह है कि बस एक चर है i
, और सभी तीन क्लोजर इसे संदर्भित करते हैं। जब लूप खत्म हो जाता है, तो अंतिम मान i
3 है, और someArrary[3]
है undefined
। आप किसी अन्य फ़ंक्शन को कॉल करके इसके चारों ओर काम कर सकते हैं जो आपके लिए क्लोजर बनाएगा। या आप jQuery उपयोगिता का उपयोग करते हैं जो यह मूल रूप से आपके लिए करेगा:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
अब, जब आप कार्यों को लागू करते हैं, तो आपको अपेक्षित रूप से सामग्री १, २ और ३ के साथ तीन अलर्ट मिलते हैं।
सामान्य तौर पर, यह ऐसा कुछ भी नहीं है जिसे आप स्वयं नहीं कर सकते, लेकिन यह अच्छा है।