我有这样的代码,它可以工作:
$(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);
}
});
在原始脚本中,您声明了函数animateIt
,然后立即调用它,但在修改后的脚本中,声明了闭包,而从未调用过它。
你应该尝试改变这个:
function() {
$("#mover").slideToggle("slow",arguments.callee);
}
这个:
(function() {
$("#mover").slideToggle("slow",arguments.callee);
})();
也就是说,您在同一行声明并调用闭包。
请记住,据我所知,arguments.callee
和arguments.caller
的使用是非常不鼓励的,应该避免。