2013-01-10 16 views

cevap

8

Bu davranış jQuery ziyerete uygulanır edilir. JQuery api belgesinde "false geri arama işlevini döndürerek break $ .each() döngüsünü belirli bir yinelemede yapabiliriz. non-false döndürme bir for döngüsünde continue deyimiyle aynıdır, hemen atlayacaktır. Sonraki iterasyon ", here hakkında okuyabilirsiniz. $.each durumda

3

return devam edecek return false kıracak. documentation, örneğin break yerine konuşur, ancak yine de .each geri aramadaki return işlevini belirtir.

+0

çaba için teşekkürler + 1ed! – coolguy

1

, sen çıkabilr hiçbir döngü var ve hatayı olsun bu yüzden. JQuery'nin yolu, işleviniz false döndürürse breaks döngüsündedir.

+0

çaba için teşekkürler + 1ed! – coolguy

1

Ayrıca dizi öğelerini yinelemek için JavaScript'in every yöntemi kullanabilirsiniz.

her yöntemi callbackfn fonksiyonu kadar döner yanlış, artan göstergesi amacıyla, callbackfn fonksiyonu her bir dizi elemanı için bir kez çağırır. Callbackfn'in false değerini döndürmesine neden olan bir öğe bulunduysa, her yöntem hemen false değerini döndürür. Aksi halde, her yöntem doğru döner.

+0

çaba için teşekkürler + 1ed! – coolguy

2

Bu nasıl doğru değil?

break veya continue ifadeleri (for-in, while-, ..., için-) loop statement bir parçası olarak geçerlidir. Bunu düz bir işlevde yapamazsınız. spec Gönderen:

Bir program [...] program/devam break ifadesini içeriyorsa sözdizimi yanlış kabul edilir [...] doğrudan ya da dolaylı bir IterationStatement içinde, (ancak fonksiyon sınırları geçerken). Bir işlevden (işlev gövdesinin daha fazla yürütülmesini bozan) return yerine,Bunun yerine, return yapabilirsiniz. the documentation'da okuyabileceğiniz gibi, false döndürülmesi, yinelemeyi $.each içinde durdurur.

+0

arası "false iadesi" ile uygulanabilir. "Devam" – coolguy

+0

Sadece "geri dönüş" işlevi, işlev gövdesinden erken. – Bergi

+0

çaba için teşekkürler + 1ed! – coolguy

2

$.each, özel kodu yürütmek için bir geri arama kullanır, break, kaydırma döngüsünü bozabilecek bir denetim ifadesidir. break veya continue, temsilci bir işlevden değil, doğrudan loop gövdesinden çağırılmalıdır.bu nedenle geri çağırma içine loop control ifadeleri kullanamaz İşte

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

kodunuzu callback() işlevi içinde ikamet olduğu eşit olarak

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

kabul edilebilir.

documentation'da daha fazlasını okuyabilirsiniz.

+0

çaba için teşekkürler + 1ed! – coolguy

İlgili konular