2009-11-23 18 views
439

मैं jQuery each लूप से कैसे टूट सकता हूं?jQuery के प्रत्येक लूप को कैसे तोड़ें

मैं कोशिश की है:

return false; 

पाश में, लेकिन यह काम नहीं किया। कोई विचार?

+2

वंशावली के लिए: प्रश्नकर्ता ने झूठ लौटने का काम क्यों नहीं किया? वस्तुतः हर जवाब ऐसा करने के लिए कहता है। आश्चर्य की बात है कि यह संभवतः इसलिए था क्योंकि केवल प्रत्येक-लूप को समाप्त करता है। फॉर-लूप के अंदर एक रिटर्न स्टेटमेंट, इसके विपरीत, ** लूप _and_ कॉलिंग फ़ंक्शन ** से बाहर निकल जाएगा। प्रत्येक-लूप से इस तरह के कठोर व्यवहार को पाने के लिए, आपको प्रत्येक-लूप के अंदर क्लोजर-स्कोप के साथ ध्वज सेट करना होगा, फिर उसके बाहर ध्वज का जवाब दें। –

+4

@ बॉबस्टिन-विस्बीबोन किसी ने मेरी मूल टिप्पणी हटा दी। मैंने गलत जगह पर 'वापसी झूठी' डाल दी। जब मैंने इसे सब कुछ तय किया। – Luke101

+0

यह एक भ्रमित सवाल छोड़ देता है। – arame3333

उत्तर

797

break$.each लूप, आपको लूप कॉलबैक में false वापस करना होगा।

लौटने true एक सामान्य पाश में continue के समतुल्य अगले पुनरावृत्ति पर छोड़ देता है।

$.each(array, function(key, value) { 
    if(value === "foo") { 
     return false; 
    } 
}); 
+3

बस जो मैं खोज रहा था, धन्यवाद। @OZZIE, बस "वापसी सही" का उपयोग करें; या "झूठी वापसी;" आपकी स्थितियों के आधार पर। – dchayka

+0

लूप कॉलबैक में "वापसी 'झूठी' के साथ @CMS का अर्थ क्या है।" यह वास्तव में कहां है? – mesqueeb

+0

ईजी। '$ .each (सरणी, फ़ंक्शन (कुंजी, मान) {if (value ==" foo ") झूठी वापसी;});' – SteveEdson

50

According to the documentation return false; should do the job.

हम $ .प्रत्येक() पाश तोड़ सकते हैं [..] कॉलबैक फ़ंक्शन बनाने अवास्तविक लौटाते द्वारा।

वापसी कॉलबैक में झूठी:

function callback(indexInArray, valueOfElement) { 
    var booleanKeepGoing; 

    this; // == valueOfElement (casted to Object) 

    return booleanKeepGoing; // optional, unless false 
          // and want to stop looping 
} 

Btw, इस तरह continue काम करता है:

गैर झूठी रिटर्निंग पाश के लिए एक में एक जारी रखने के बयान के रूप में एक ही है; यह तुरंत अगले पुनरावृत्ति पर छोड़ देगा।

30

मैंने इस प्रश्न के उत्तर के लिए एक पहेली बनाया क्योंकि स्वीकार्य उत्तर गलत है और यह इस सवाल के बारे में Google से लौटा पहला स्टैक ओवरफ्लो थ्रेड है।

एक $ .प्रत्येक आप return false;

यहाँ का उपयोग करना चाहिए से बाहर तोड़ने के लिए एक फिडल यह साबित हो रहा है:

http://jsfiddle.net/9XqRy/

+10

मुझे पहेली पसंद है, लेकिन मुझे यकीन नहीं है कि आप क्यों स्वीकार करते हैं कि स्वीकृत उत्तर गलत है , क्योंकि आप दोनों एक ही बात कह रहे हैं। – gitsitgo

21

मैं जहाँ मैं एक शर्त है कि पाश तोड़ दिया मुलाकात की स्थिति में आए हालांकि, .each() फ़ंक्शन के बाद कोड अभी भी निष्पादित किया गया है। मैंने बाद में कोड को निष्पादित नहीं किया गया था यह सुनिश्चित करने के लिए .each() फ़ंक्शन के बाद ध्वज के तत्काल चेक के साथ "सत्य" पर ध्वज सेट किया था।

$('.groupName').each(function() { 
    if($(this).text() == groupname){ 
     alert('This group already exists'); 
     breakOut = true; 
     return false; 
    } 
}); 
if(breakOut) { 
    breakOut = false; 
    return false; 
} 
5

"प्रत्येक" कॉलबैक फ़ंक्शन का उपयोग करता है। कॉलबैक फ़ंक्शन कॉलिंग फ़ंक्शन के बावजूद निष्पादित करता है, इसलिए कॉलबैक फ़ंक्शन से कॉलिंग फ़ंक्शन पर वापस जाना संभव नहीं है।

लूप के लिए उपयोग करें यदि आपको कुछ स्थितियों के आधार पर लूप निष्पादन को रोकना है और उसी कार्य में रहना है।

+1

मुझे लगता है कि यह स्वीकार्य उत्तर होना चाहिए! –

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