-4
$("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;
        }
    });
});

メソッドreturn false内で何をする必要がありますか?.each()

4

5 に答える 5

14

jQuery の.eachでは、「通常の」ループでreturn false;使用するようなものです。break;for

反対に、のreturn true;ようcontinue;です!

ドキュメント: http://api.jquery.com/each/


return falseそれだけです。を返しますfalse。呼び出し元の関数が戻り値で何をするかは、別の話です。すべてを実行する「意味」は、実行している関数によって異なりますreturnreturn falseを返すだけfalseです。

(からではなく) クリック ハンドラーから戻る場合.each、既定のクリック アクションは停止しますが、コードのその時点で、別の関数内にいます。

于 2013-05-01T18:27:02.257 に答える
4

デフォルトのアクションとイベントの伝播をキャンセルするためのものです

問題は、2 つの があり、「他のfunction」ものに影響を与えることを期待していることです。ステートメントは、最も近いに適用されます。この場合、これは に渡されたものです。return falsereturn function.each()

に使用するreturn falseには、それだけで.click()使用する必要があります。function

$("button").click(function () {
    // either here...

    $("div").each(function (index, domEle) {
        // ...
    });

    // ...or here
});

に依存しているように見えるので.each()、必要に応じて変更できる変数を作成し、最後にそれを返す必要があります。

$("button").click(function () {
    var clickResult; // `undefined` = "no change"

    $("div").each(function (index, domEle) {
        // domEle == this
        $(domEle).css("backgroundColor", "yellow");
        if($(this).is("#stop")) {
            $("span").text("Stopped at div index #" + index);
            clickResult = false;
            return false; // remove if you want the `.each()` to continue regardless
        }
    });

    return clickResult;
});
于 2013-05-01T18:41:25.727 に答える
0

キーワードは確かにreturnループから抜け出します。

JavaScript でのデフォルト アクションのキャンセルは通常 で行われますがevent.preventDefault();、このコンテキストでどのデフォルト アクションをキャンセルしようとしているのかはわかりません。

于 2013-05-01T18:28:38.153 に答える