web-dev-qa-db-ja.com

ループごとにjQueryから抜ける方法

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

私が試してみました:

 return false;

ループではこれはうまくいきませんでした。何か案は?

565
Luke101

$.each または $(selector).each ループをbreakにするには、ループコールバックでfalseを返す必要があります。

trueを返すと、次の繰り返しにスキップします。これは、通常のループのcontinueと同じです。

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

// or

$(selector).each(function() {
  if (condition) {
    return false;
  }
});
1010
CMS

ドキュメントによると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ステートメントと同じです。次の繰り返しにすぐにスキップします。

56
powtac

この質問に対する回答用にFiddleを作成しました。これは、受け入れられた回答が正しくないことに加えて、この質問に関してGoogleから返された最初のStackOverflowスレッドです。

$ .eachから抜け出すにはreturn false;を使わなければなりません

これを証明するFiddleがあります。

http://jsfiddle.net/9XqRy/

34
iamjpg

私はループを破った条件を満たした状況に出くわしました、しかし、.each()関数の後のコードはまだ実行されました。次に、.each()関数の後にフラグをすぐにチェックしてフラグを "true"に設定し、後続のコードが実行されなかったことを確認します。

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 
31
David Aguirre

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

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

8
Sumit Jambhale

私はそれがかなり古い質問であることを知っています、しかし私は何の答えも見ませんでした。

2つの簡単な例を挙げて説明します。

1.例: この場合、単純な反復があり、3つが見つかった場合はreturn trueで中断します _

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

この関数を呼び出すと、単にtrueが返されます。

2.例 この場合、jqueryの each関数 を使用して、無名関数をパラメータとして使用します _

function canFindThree() {

    var result = false;

    $.each([1, 2, 3, 4, 5], function(key, value) { 
        if(value === 3) {
            result = true;
            return false; //This will only exit the anonymous function and stop the iteration immediatelly.
        }
    });

    return result; //This will exit the function with return true;
}
2
Vural Acar