jQuery .animate()回调无限循环

Dak*_*ota 4 html jquery infinite-loop jquery-animate

一个简单的问题:为什么我能这样做

var start = function() {
    $('#element').animate({}, 5000, 'linear', start);
}
Run Code Online (Sandbox Code Playgroud)

但不是这个

    function start() {
        $('#element').animate({}, 5000, 'linear', start());
    }
Run Code Online (Sandbox Code Playgroud)

第一个工作完美,完成后重新启动动画.第二个简单地导致无限循环.

Gab*_*oli 9

要么使用

function start() {
    $('#element').animate({}, 5000, 'linear', start);
}
Run Code Online (Sandbox Code Playgroud)

要么

function start() {
    $('#element').animate({}, 5000, 'linear', function(){ start(); });
}
Run Code Online (Sandbox Code Playgroud)

如果你想实际传递一些参数来启动,第二种情况很有用.


Cha*_*ndu 5

在您的第二个函数中,您正在执行该函数而不是传递对该函数的引用,因此它将进入无限循环。

从以下位置更改您的第二个功能:

function start() {
 $('#element').animate({}, 5000, 'linear', start());
}
Run Code Online (Sandbox Code Playgroud)

function start() {
  $('#element').animate({}, 5000, 'linear', start); //Notice the change to start
}
Run Code Online (Sandbox Code Playgroud)