2012-10-16 14 views
8
  1. कोड के इन दो स्निपेट समान चीजें करते हैं? यदि हां, तो दूसरे को कब इस्तेमाल किया जाना चाहिए?jQuery चयनकर्ता लूपिंग बनाम प्रत्येक

    $("foo").empty(); 
    
  2. सामान्य में

    $("foo").each(function(i,value) { 
        $(this).empty(); 
    }); 
    

    बनाम (जब आप i या value से जुड़ी कोई भी ऐसा करने की आवश्यकता के अलावा) यह माना जा सकता है कि $("foo").someMethod() का अर्थ है "पर प्रत्येक तत्व से मेल खाता है somemethod() चलाने चयनकर्ता, सिवाय इसके कि विधि का नाम each है (यानी प्रत्येक एक विशेष मामला है)

+1

आप डॉन हैं ' आपको उस आइटम की अनुक्रमणिका की आवश्यकता है जिसे आप खाली कर रहे हैं, 'प्रत्येक() का उपयोग करने की कोई आवश्यकता नहीं है 'आदेश। छोटे वाक्यविन्यास के साथ जाओ। – Lix

+1

@Lix: यह भी तेजी से चलता है: http://jsperf.com/jquery-selector-looping-vs-using-function-each – RASG

उत्तर

4

मान लीजिए कि आप स्टॉक jQuery कार्यों का जिक्र कर रहे हैं, हां, कोड के दो स्निपेट समान हैं।

आपको each() फ़ंक्शन का उपयोग तब करना चाहिए जब आप इंडेक्स के साथ काम करना चाहते हैं, या लंबे फ़ंक्शन चेनिंग को रोकने के लिए।

$('foo').someMethod() की आपकी समझ jQuery विधियों के बारे में सच है। लेकिन चेतावनी दी जानी चाहिए, कुछ प्लगइन्स चयनकर्ता को अलग तरीके से संभाल सकते हैं, या उदाहरण के लिए केवल पहले मिलान किए गए तत्व को प्रभावित कर सकते हैं।

+0

क्या आप इस बात पर विस्तार कर सकते हैं कि प्लगइन इस तरह के फैशन में jquery selector को 'गंदा' कैसे कर सकता है? (यदि आप $ ('') का जिक्र कर रहे थे) – wal

+0

यह चयनकर्ता को 'गंदा' नहीं करता है, लेकिन प्लगइन केवल पहले मिलान किए गए तत्व को संभालने में सक्षम हो सकता है, उदाहरण के लिए। – BenM

3

हां, अधिकांश jQuery फ़ंक्शन इस तरह डिज़ाइन किए गए हैं। कोड उदाहरण को

देखो:

$.fn.someMethod = function() { 
    return this.each(function() { 
     do_something(this); 
    }); 
}; 

तो भी आप .each फिर से इस्तेमाल कर सकते हैं, तो आप सिर्फ उपयोग करना चाहिए:

$(selector).someMethod();

नहीं

$(selector).each(function() { 
    $(this).someMethod(); 
}); 
+0

मेरी वर्तमान jquery noob-ness महत्व को समझ में नहीं आता है। क्या आप '$ .fn.someMethod' भाग को समझा सकते हैं। – wal

+0

@wal इसका मतलब है कि jQuery के प्रोटोटाइप पर विधि डालें। आप jQuery प्लगइन बनाने के तरीके के कुछ लेख देख सकते हैं। – xdazz

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