-1

このコード行がありますが、機能しません。私の関数が問題の原因であると推測しています。これが私のJavaScriptです:

$(document).ready(function () {
    var interval;

    function move(ele) {
        $(ele).animate({
            'background-position-y': '0px'
        }, 200, function () {
            $(ele).animate({
                'background-position-y': '3px'
            }, 200, function () {
                interval = setTimeout(function () {
                    move(ele)
                }, 3);
            });
        });
    };
    $(".up").hover(function () {
        move(this), function () {
            clearTimeout(interval);
            interval = null;
            $(this).css("background-position", "80px 3px ");
        };
    });

誰かが私がここで間違っていることを説明できますか?

4

2 に答える 2

1

エラー、実際の問題は、 に 2 つではなく 1 つの関数しか渡していないことですhover….hover(function() { move(…), function() { … } })の代わりに持っています….hover(function() { move(…); }, function() { … })

将来的には、一貫してコードをインデントする習慣を身につければ、この種のエラーははるかに見つけやすくなります。

于 2012-06-12T20:05:02.527 に答える
1

David によって提案された適切な右中括弧を使用しても、アニメーションを続行するにはまだ問題があります。タイマー (間隔) をクリアしても、 に渡されたコールバック関数の実行は停止しません.animate()。そのinterval = setTimeout(...)ため、アニメーション サイクルが引き続き実行され、永続化されます。

いくつかの改善点があるかもしれませんが (グローバル変数を取り除くなど)、実際の例のためにコードを少し作り直しました。 http://jsfiddle.net/aKKRk/

于 2012-06-12T20:54:27.323 に答える