2013-01-10 12 views
6

में जारी रहा कोर जावास्क्रिप्ट के साथ पता है कि हम इस तरह कर सकते हैं:उपयोग और jQuery

for(i=1;i<10;i++){ 
    if(i==5){ 
    //break or continue 
    } 
} 

लेकिन यह सही नहीं है?

$.each(iteratorarray,function(i){ //iteratorarray - just an array 
    if(i==5){ 
    //break or continue,will cause error here 
    } 
}); 
+0

क्या आपने [दस्तावेज़] पढ़ा है (http://api.jquery.com/each/)? – Bergi

+0

यह कोर जावास्क्रिप्ट जैसा ही पहला है, यह एक सामान्य कार्य है। – Esailija

उत्तर

8

यह व्यवहार jQuery द्वारा लागू किया गया है। यह है कि jQuery एपीआई दस्तावेज़ कहता है, "हम break $ .each() लूप को कॉलबैक फ़ंक्शन false पर एक विशेष पुनरावृत्ति पर कर सकते हैं। non-falsecontinue कथन के लिए एक लूप में समान है; यह तुरंत तुरंत छोड़ देगा अगली पुनरावृत्ति ", आप इसके बारे में here पढ़ सकते हैं।

3

return जारी रहेगा, return false टूट जाएगा। documentation उदाहरण के अनुसार break विकल्प के बारे में बात करता है, लेकिन यह .each कॉलबैक में return की कार्यक्षमता निर्दिष्ट करता है।

+0

धन्यवाद आदमी प्रयास के लिए +1 किया! – coolguy

1

$.each मामले में, कोई लूप नहीं है जिसे आप बाहर कर सकते हैं, और यही कारण है कि आपको त्रुटि मिलती है। जिस तरह से jQuery यह करता है, हालांकि, यह है कि लूप breaks यदि आपका फ़ंक्शन false देता है।

+0

धन्यवाद आदमी प्रयास के लिए +1 किया! – coolguy

1

आप सरणी तत्वों को पुनरावृत्त करने के लिए जावास्क्रिप्ट की every विधि का भी उपयोग कर सकते हैं।

हर विधि callbackfn समारोह प्रत्येक सरणी तत्व के लिए एक बार कहता है, आरोही सूचकांक क्रम में, callbackfn समारोह तक रिटर्न झूठी। यदि कोई तत्व जो कॉलबैकएफएन को झूठी वापसी का कारण बनता है पाया जाता है, तो प्रत्येक विधि तुरंत झूठी होती है। अन्यथा, प्रत्येक विधि सत्य लौटती है।

+0

धन्यवाद आदमी प्रयास के लिए +1 किया! – coolguy

2

यह सही क्यों नहीं है?

break या continue बयान (के लिए-in-, while-, ..., तक-) loop statement एक के एक भाग के रूप में ही मान्य है। आप इसे सादे फ़ंक्शन में नहीं कर सकते हैं। कल्पना से:

एक कार्यक्रम वाक्य रचना गलत करता है, तो [...] कार्यक्रम एक जारी रखने के लिए/तोड़ बयान में माना जाता है [...] प्रत्यक्ष या परोक्ष रूप (नहीं बल्कि समारोह सीमाओं को पार) एक IterationStatement के भीतर।

इसके बजाय, आप फ़ंक्शन से return (जो फ़ंक्शन बॉडी के आगे निष्पादन को तोड़ता है) कर सकते हैं। जैसा कि आप the documentation में पढ़ सकते हैं, false पर लौटने से $.each में पुनरावृत्ति बंद हो जाता है।

+0

ब्रेक 'रिटर्न झूठी' द्वारा लागू किया जा सकता है 'जारी रखें' – coolguy

+0

फ़ंक्शन बॉडी से बस 'वापसी' करें। – Bergi

+0

धन्यवाद आदमी प्रयास के लिए +1 किया! – coolguy

2

$.each कस्टम कोड निष्पादित करने के लिए कॉलबैक का उपयोग करता है, break एक नियंत्रण कथन है जो रैपिंग लूप को बाधित कर सकता है। break या continue को किसी प्रतिनिधि समारोह से loop शरीर से सीधे कॉल करना होगा।

$.each(iteratorarray,function(i){ //iteratorarray - just an array 
    if(i==5){ 
    //break or continue,will cause error here 
    } 
}); 

रूप

for(i=0;i<iteratorarray.length;i++){ 
    if(callback(i, iteratorarray[i]) === false){ 
     break; 
    } 
} 

अपने कोड callback() समारोह के अंदर रह रहा है के बराबर इसलिए आप कॉलबैक अंदर loop control बयान उपयोग नहीं कर सकते माना जा सकता है।

आप documentation में और अधिक पढ़ सकते हैं।

+0

धन्यवाद आदमी प्रयास के लिए +1 किया! – coolguy

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