-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

错误,看起来您的实际问题是您只将一个函数传递给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 回答