2012-03-06 9 views
4

可能な重複を打破する方法:は.each()反復

var steps = $("div#f"); 
steps.each(function() { 
    var s = $(this); 
    var cs = $(this).find(".Cm"); 
    cs.each(function() { 
     var tc = $(this); 
     var err = tc.attr("h"); 
     if (err == false) { 
      this.c = err;//this.c is a global variable 
      return this.c; 
      break;//here is where the error is being thrown 
     } 
     else { 
      this.c = {"Eval": err, "S": s, "Cm": tc}; 
      return this.c; 
     } 
    }); 
}); 

私は.each()反復を使用しています:ここで


Nested jQuery.each() - continue/break

は私のコードです値を収集する。私はそれがループのように機能したと思ったので、私はIDが breakステートメントを使用して解散すると思った。これは "不正な"エラーを投げています。誰でも each反復から脱出する方法を知っていますか?

+0

は 'return'代わり – ManseUK

+1

RTFM試すことができます。http ://api.jquery.com/each/: "コールバック関数内からfalseを返すことでループを止めることができます。" –

+0

falseが返されます。 – DG3

答えて

3

、単により多くの情報のためjQuery .each() docsを見てみましょうreturn false;

を使用します。このリソースを見てみましょう。ここで

は、ドキュメントに与えられた、例です:

$("button").click(function() { 
    $("div").each(function(index, domEle) { 
     // domEle == this 
     $(domEle).css("backgroundColor", "yellow"); 
     if ($(this).is("#stop")) { 
      $("span").text("Stopped at div index #" + index); 
      return false; //Equivalent to break; 
     } 
    }); 
});​ 
+1

本当ですか?正解の場合-1、ドキュメントへのリンク、サンプルコード?説明するケア? –

0

あなたがのために、各ループで本当にじゃないので、ブレークは意味がありません。これは実際に毎回呼び出される関数なので、関数から戻り、呼び出しを停止するようにjQueryに指示する必要があります。

代わりにfalseを返し、ループから抜け出す必要があります。

0

その機能、あなただけのreturn false完全にループのうちbreakへの缶や、あなたがcontinueの文のように働く何かをしたい場合は、あなたがreturn true

each(function() 
{ 
    if (someCondition) return true; // same as continue; 
    if (someOtherCondition) return false; // same as break; 
});