函数外部的 clearTimeout() 无法正常工作

clearTimeout() outside of function not working properly

本文关键字:常工作 工作 clearTimeout 外部 函数      更新时间:2023-09-26

我有这行代码,但它不起作用,我猜我的函数是这里问题的原因。这是我的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 ");
        };
    });

有人可以解释我在这里做错了什么吗?

即使按照大卫的建议使用了正确的右大括号,仍然存在一个问题,使动画继续下去。 清除计时器(间隔)不会阻止传递给.animate()的回调函数执行。 因此,interval = setTimeout(...)仍然会被执行并延续动画周期。

我为一个工作示例对代码进行了一些修改,尽管可能会有一些改进(例如摆脱全局变量)。 http://jsfiddle.net/aKKRk/

错误,看起来您的实际问题是您只将一个函数传递给hover,而不是两个。你有….hover(function() { move(…), function() { … } })而不是….hover(function() { move(…); }, function() { … }).

将来,如果您养成始终缩进代码的习惯,则此类错误将更容易发现。