我已经elem
在下面的两个循环中声明了变量;但是,当第一个循环中的匿名函数被调用时(在 400 毫秒fadeOut
效果完成后),elem
似乎指的elem
是在第二个循环中分配的值。换句话说,如果您elem
在第二个循环中重命名为任何其他变量名,则代码可以正常工作。
有没有办法在匿名函数周围进行闭包,以便在匿名函数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);
}