0

我有这个有效的代码:

$(document).ready(function() {
    $("#run").click(function() {
        $("div:animated").toggleClass("colored");
    });

    function animateIt() {
        $("#mover").slideToggle("slow", animateIt);
    }
    animateIt();
});

我们调用函数本身,因此arguments.callee我们不需要函数的名称。所以这也应该有效,但它没有。谁能告诉我为什么?

$(document).ready(function() {
    $("#run").click(function() {
        $("div:animated").toggleClass("colored");
    });

    function() {
        $("#mover").slideToggle("slow", arguments.callee);
    }
});
4

1 回答 1

5

在原始脚本中,您声明了函数animateIt,然后立即调用它,但在修改后的脚本中,您声明了闭包而不调用它。

你应该尝试改变这个:

function() {
  $("#mover").slideToggle("slow",arguments.callee);
}

有了这个:

(function() {
  $("#mover").slideToggle("slow",arguments.callee);
})();

也就是说,你们都在同一行声明和调用闭包。

请记住,据我所知,非常不鼓励使用arguments.calleeandarguments.caller并且应该避免使用。

于 2012-08-01T08:45:28.410 回答