2010-06-29 27 views
13

Bir koşul karşılandığında $.each döngüsünden nasıl çıkabilirim? Koleksiyonu tekrarlamak istemiyorum.

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

Ben break; & return; ifadeye çalıştım ama o noktada bitmiyor gelmez yürütülmesine görünüyor. Herhangi bir fikir çok takdir edilecektir.

+0

şartlı hiç karşılanmaktadır emin (a yorumda Kobi önerdiği gibi) arayarak yineleme olmadan peşinde olduğun elde edebilirsiniz? belki bunun yerine this.attr ('id') deneyin? –

+1

Kullanımdan kaldırıldığı için '@' kullanmayın. Ayrıca, neden sadece 'araç = $ (' # '+ vehicleId [0]) ' – Mottie

+0

[JQuery' Her Döngü Nasıl Break Out] olası kopyası (http://stackoverflow.com/questions/1784780/how- jpeg-her-döngü için) – outis

cevap

14

Geri dönen false, $ .each döngüsünün kesilmesiyle eşdeğerdir. Yani örnekteki:

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

ihtiyaç ve her bir elemanın üzerine verilen işlev yürütür, break etkilemez gerçek yineleme. Ancak, sadece

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

veya

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

$ (araçlar) .filter ('# id') ', iirc, bu şekilde bir koleksiyonu filtreleyemezsiniz. – Kobi

+0

@Kobi, Aslında, her iki iş. Sürümünüz tartışmalı bir şekilde daha iyi (en azından gerçekte ne yapıldığını çok daha net bir şekilde gösteriyor) ama benim de benim çalışmam gerekiyor. Eğer araç [0] ''id' değerine sahipse, kod satırım '$ (araçlar)' bağlamında '' id '' araması yapar. . =) –

İlgili konular