我的代码有效:
$(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);
}
});
答案 0 :(得分:5)
在原始脚本中,您声明函数animateIt
然后立即调用它,但是在修改后的脚本中,您声明了闭包而没有调用它。
您应该尝试更改此内容:
function() {
$("#mover").slideToggle("slow",arguments.callee);
}
用这个:
(function() {
$("#mover").slideToggle("slow",arguments.callee);
})();
也就是说,你们都在同一行上声明并调用闭包。
请记住,据我所知,arguments.callee
和arguments.caller
的使用非常气馁,应该避免使用。