787

jQueryeachループから抜け出すにはどうすればよいですか?

私が試してみました:

 return false;

ループ内ですが、これは機能しませんでした。何か案は?


2020 年 9 月 5 日更新

置くreturn false;場所を間違えました。ループの中に入れると、すべてが機能しました。

4

7 に答える 7

1383

orループにbreakは、ループ コールバックで戻る必要があります。$.each$(selector).eachfalse

スキップを次の反復に戻すことは、通常のループのtruea と同等です。continue

$.each(array, function(key, value) { 
    if(value === "foo") {
        return false; // breaks
    }
});

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});
于 2009-11-23T17:46:33.683 に答える
59

ドキュメントによるとreturn false;、仕事をする必要があります。

コールバック関数が false を返すようにすることで、$.each() ループ [..] を中断できます。

コールバックで false を返します。

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;

  this; // == valueOfElement (casted to Object)

  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

ところで、continue次のように機能します。

false 以外を返すことは、for ループの continue ステートメントと同じです。次の繰り返しにすぐにスキップします。

于 2009-11-23T17:49:04.287 に答える
37

ループを中断する条件を満たした状況に遭遇しましたが、.each() 関数の後のコードは引き続き実行されました。次に、フラグを「true」に設定し、.each() 関数の直後にフラグをチェックして、後続のコードが実行されていないことを確認しました。

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 
于 2014-01-24T23:10:32.857 に答える
7

「each」はコールバック関数を使用します。コールバック関数は呼び出し元の関数に関係なく実行されるため、コールバック関数から呼び出し元の関数に戻ることはできません。

何らかの条件に基づいてループの実行を停止し、同じ関数にとどまる必要がある場合は、for ループを使用します。

于 2015-11-25T05:58:23.777 に答える