我已经在下面的两个循环中声明了变量elem
;但是,当第一个循环中的匿名函数被调用时(在完成400ms fadeOut
效果之后),elem
似乎指的是在第二个循环中分配的elem
的值。换句话说,如果将第二个循环中的elem
重命名为任何其他变量名称,则代码正常工作。jquery回调匿名函数关闭
有没有办法围绕匿名函数进行闭包,以使elem
的值在匿名函数的上下文中没有改变?
for (var i = 0; i < outs.length; i++) {
var elem = this.elementAtPoint(outs[i]);
$(elem).fadeOut(400, function() {
$(elem).removeClass("white black queen"); //UPDATE
$(elem).show();
});
//$(elem).css("background", "red");
}
for (var i = 0; i < ins.length; i++) {
var elem = this.elementAtPoint(ins[i]);
var piece = this.board.pieceAt(ins[i]);
$(elem).hide();
$(elem).addClass(this.classForPiece(piece));
$(elem).fadeIn(400);
}
没有在JavaScript中没有块范围,只有所定义的功能范围 – 2013-05-09 03:41:49
什么'out'?你可以用jQuery的'$ .each'循环数组和对象,这会创建一个新的作用域。 – elclanrs 2013-05-09 03:42:40
您可以了解更多关于JavaScript JavaScript的提示 – 2013-05-09 03:51:09