$ .Each (चयनकर्ता) और $ (चयनकर्ता) .each () के बीच अंतर क्या है


83

इसमें क्या अंतर है:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());

और इस:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });

जिस टेबल सेल का चयन किया जा रहा है और जिस पर कार्रवाई की जाती है, उसके लिए HTML इस तरह दिखता है:

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>

मैं jQuery के दस्तावेज़ पर चला गया हूं, लेकिन मुझे अभी भी अंतर समझ में नहीं आया है। (क्या यह मुझे है या कि प्रलेखन कभी-कभी सामग्री की स्पष्टता में थोड़ा "अस्पष्ट" है?)

जोड़ी गई जानकारी:

जाहिरा तौर पर मेरा प्रयास एक सामान्य उदाहरण लोगों को भ्रमित कर रहा है! पहले उदाहरण में (पहले) लापता कोष्ठक के साथ। :(

पहला उदाहरण मेरे कोड की एक पंक्ति से आता है जो चेकबॉक्स वाले किसी भी पंक्तियों के लिए <tbody> को हटाता है:

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());

दूसरा उदाहरण एक ऐसी स्थिति से आता है जहां मैं किसी भी चेक किए गए चेकबॉक्स के लिए #classesTable के माध्यम से देखता हूं और ड्रॉपडाउन में इसके मिलान आइटम को हटा देता हूं।

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});

मैं समझता हूं कि वे दो अलग-अलग चीजें करते हैं, लेकिन इस बिंदु पर नहीं कि मैं यह कह सकूंगा कि "मुझे इस मामले में $ .each () और एक अन्य मामले में .each (फ़ंक्शन () {}) का उपयोग करने की आवश्यकता है।

क्या वे परस्पर विनिमय कर सकते हैं? केवल कुछ मामलों में? कभी नहीँ?


आपका पहला कोड उदाहरण एक समापन कोष्ठक को याद कर रहा है।
tjollans

एक टिप्पणी और एक अल्पविराम, एक उदाहरण के लिए मेरा जवाब देखें।
स्टुपेरयूज़र

पहले उदाहरण के इरादे की व्याख्या कुछ अलग तरीकों से की जा सकती है। कृपया यह दर्शाने के लिए इसे सही करें कि आप वास्तव में क्या कर रहे हैं।
user113716

मैंने सेमीकॉलन से ठीक पहले लाइन के अंत में लापता दाएं पैरन को जोड़ा।
मार्क

जवाबों:


104

विवरण:

.eachएक पुनरावृत्ति है जो केवल jQuery ऑब्जेक्ट्स संग्रह पर पुनरावृति करने के लिए उपयोग की जाती है jQuery.each( $.each) जावास्क्रिप्ट ऑब्जेक्ट्स और सरणियों पर पुनरावृत्ति के लिए एक सामान्य कार्य है।


उदाहरण

1) फ़ंक्शन का उपयोग $.each() करना

var myArray = [10,20,30];

$.each( myArray, function(index, value) {
   console.log('element at index ' + index + ' is ' + value);
});

//Output
element at index 0 is 10
element at index 1 is 20
element at index 2 is 30

2) विधि का उपयोग करना.each()

$('#dv').children().each(function(index, element) {
    console.log('element at index ' + index + 'is ' + (this.tagName));
    console.log('current element as dom object:' + element);
    console.log('current element as jQuery object:' + $(this));
});

//Output
element at index 0 is input
element at index 1 is p
element at index 2 is span

साधन


5

से http://api.jquery.com/jQuery.each :

$ .Each () फ़ंक्शन .each () के समान नहीं है, जिसका उपयोग विशेष रूप से jQuery ऑब्जेक्ट पर पुनरावृति करने के लिए किया जाता है। $ .Each () फ़ंक्शन का उपयोग किसी भी संग्रह पर पुनरावृति करने के लिए किया जा सकता है, चाहे वह एक नक्शा (जावास्क्रिप्ट ऑब्जेक्ट) या एक सरणी हो।


3

आप वास्तव $.eachमें ऐसे एरे के साथ उपयोग करना चाहते हैं जो तत्व या कुछ नहीं है। अर्थात:

var x = ["test", "test2"];

आप $.each(x...इसके बजाय का उपयोग करने की कोशिश करेंगे x.each:)

.each तत्वों के लिए ही है :)


1

कोई कार्यात्मक अंतर नहीं है। प्रत्येक jQuery ऑब्जेक्ट .each()से विरासत में मिली एक विधि का मालिक है jQuery.fn। इसे कॉल करके object method, jQuery पहले से ही जानता है कि किस Array (-like object)पर चलना है। दूसरे शब्दों में, यह indexed propertysवर्तमान jQuery ऑब्जेक्ट से अधिक पर छोरों ।

$.each()पर दूसरी ओर सिर्फ एक "सहायक उपकरण" जो किसी भी तरह का अधिक लूप है Arrayया Objectहै, लेकिन निश्चित रूप से आपको लगता है कि विधि है जो लक्षित कर आप पुनरावृति करना चाहते हैं यह बताने के लिए है।
यह इस बात का भी ध्यान रखेगा कि आप किसी ऐरे या ऑब्जेक्ट में पास होते हैं या नहीं, यह हुड के नीचे for-inया for loopनीचे का उपयोग करके सही काम करता है ।


1

पहले आपके द्वारा पास किए गए संग्रह में तत्वों को कॉलबैक फ़ंक्शन चलाएगा, लेकिन आपके कोड इसके लिए फिलहाल सही रूप से सही नहीं हैं।

यह होना चाहिए:

$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);

देखें: http://api.jquery.com/jQuery.each/

दूसरा आपके द्वारा चलाए जा रहे संग्रह के प्रत्येक तत्व पर फ़ंक्शन को चलाएगा।

देखें: http://api.jquery.com/each/


आप do_somethingइसे पास करने के बजाय बुला रहे हैं । यह गलत है जब तक कि do_somethingकिसी फ़ंक्शन को वापस करने के लिए नहीं होता है।
user113716

0

पहले मामले में आप jQuery वस्तुओं और अन्य सरणी वस्तुओं पर पुनरावृत्त कर सकते हैं जैसा कि यहाँ संकेत दिया गया है:

jQuery.each ()

दूसरे मामले में आप केवल यहां बताए गए अनुसार jQuery वस्तुओं पर पुनरावृत्ति कर सकते हैं:

।से प्रत्येक()


0

$.each();एक वस्तु या सरणी के माध्यम से जो मैं समझता हूं, वह आपको प्रत्येक आइटम का पुनरावृत्ति और मूल्य देता है।

$().each(); jQuery ऑब्जेक्ट्स की सूची के माध्यम से लूप करता है और आपको इट्रेटर और jQuery ऑब्जेक्ट देता है।


0

Http://api.jquery.com/jQuery.each/ से लिया गया

$.each()समारोह के समान नहीं है .each(), जो एक jQuery वस्तु पर,, पुनरावृति करने के लिए प्रयोग किया जाता है विशेष रूप से। $.each()समारोह, किसी भी संग्रह से अधिक पुनरावृति करने के लिए इस्तेमाल किया जा सकता है कि क्या यह एक नक्शा (जावास्क्रिप्ट वस्तु) या एक सरणी है। किसी सरणी के मामले में, कॉलबैक को हर बार एक सरणी इंडेक्स और संबंधित एरे वैल्यू पास किया जाता है। (इस कीवर्ड के माध्यम से मान को भी एक्सेस किया जा सकता है, लेकिन जावास्क्रिप्ट हमेशा इस मान को एक ऑब्जेक्ट के रूप में लपेटता है भले ही यह एक साधारण स्ट्रिंग या संख्या मान हो।) विधि अपना पहला तर्क देता है, वह ऑब्जेक्ट जो पुनरावृत्त हुआ था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.