2010-06-29 11 views
13

कोई शर्त मिलने पर $.each पाश से कैसे बाहर निकल सकता है? मैं संग्रह को फिर से शुरू नहीं करना चाहता हूं।

$(vehicles).each(function() { 
    if (this["@id"] === vehicleId[0]) { 
     vehicle = this; 
    } 
}); 

मैं break; & return; बयान के साथ की कोशिश की, लेकिन यह निष्पादन उस बिंदु पर रोक नहीं नहीं करता है लगता है। किसी भी विचार की सराहना की जाएगी।

+0

सशर्त कभी पूरा किया जाता है क्या आप वाकई रहे हैं द्वारा यात्रा के बिना के बाद कर रहे हैं? शायद इसके बजाय this.attr ('id') आज़माएं? –

+1

'@' का उपयोग न करें क्योंकि इसे बहिष्कृत कर दिया गया है। साथ ही, 'वाहन = $ (' # '+ वाहन आईडी [0]) ' – Mottie

+0

का उपयोग क्यों न करें [Jquery के प्रत्येक लूप से कैसे बाहर निकलें] [http://stackoverflow.com/questions/1784780/how- टू-ब्रेक-आउट-ऑफ-जेक्वायरीज़-प्रत्येक-लूप) – outis

उत्तर

14

लौटने पर झूठ $ .each loop से बाहर तोड़ने के बराबर है। तो अपने उदाहरण में:

if (this["@id"] === vehicleId[0]) { vehicle = this; return false; } 
0

प्रत्येक तत्व पर दिए गए फ़ंक्शन निष्पादित जरूरत है एक लिपटे सेट पर .each() दोहराता के बाद से और, break को प्रभावित नहीं करेगा वास्तविक पुनरावृत्ति। हालांकि, अगर आप प्राप्त कर सकते हैं क्या आप बस बुला

vehicle = $('#' + vehicleId[0], $(vehicles)); 

या (के रूप में एक टिप्पणी में कोबी ने सुझाव दिया)

vehicle = $(vehicle).filter('#' + vehicleId[0]); 
+0

वह '$ (वाहन) होगा। फिल्टर ('# आईडी') ', आईआईआरसी, आप इस तरह से संग्रह को फ़िल्टर नहीं कर सकते हैं। – Kobi

+0

@ कोबी, दरअसल, दोनों काम करते हैं। आपका संस्करण तर्कसंगत रूप से बेहतर है (कम से कम यह वास्तव में बहुत स्पष्ट है कि वास्तव में क्या किया जा रहा है) लेकिन मेरा भी काम करना चाहिए। यदि 'वाहन आईडी [0] 'का मान है," आईडी ", तो कोड की मेरी लाइन' $ (वाहन)' के संदर्भ में '# id''' की तलाश करेगी, जो आपकी लाइन भी ठीक है । =) –

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