JQuery动画回调不在循环中工作
我有一个由jquery操作的帖子列表,当删除表中的一个或多个帖子行时,我希望这些行逐渐淡出,然后从DOM中删除,删除一行的代码如下:JQuery动画回调不在循环中工作,jquery,animation,callback,Jquery,Animation,Callback,我有一个由jquery操作的帖子列表,当删除表中的一个或多个帖子行时,我希望这些行逐渐淡出,然后从DOM中删除,删除一行的代码如下: $('.post#' + postID).parent('tr').fadeOut('slow', function() { $('.post#' +postID).parent('tr').remove(); }); 它对于单行删除非常有效,但是当我将上面的代码部分放入for循环时: for(var i = 0; i < selectedPost
$('.post#' + postID).parent('tr').fadeOut('slow', function() {
$('.post#' +postID).parent('tr').remove();
});
它对于单行删除非常有效,但是当我将上面的代码部分放入for循环时:
for(var i = 0; i < selectedPostIds.length; i ++) {
$('.post#' + selectedPostIds[i]).parent('tr').fadeOut('slow', function() {
$('.post#' + selectedPostIds[i]).parent('tr').remove();
});
}
动画仍然有效,但是DOM元素,即post行没有被删除。有什么建议吗?提前感谢。这是因为在循环中错误使用了闭包变量 在回调中,它引用tr元素,因此您可以使用
for (var i = 0; i < selectedPostIds.length; i++) {
$('.post#' + selectedPostIds[i]).parent('tr').fadeOut('slow', function () {
$(this).remove();
});
}
也看到
工作得很好!哦,你把我从几个小时的挣扎中救了出来,真的谢谢你!我注意到jslint给出了一个警告:不要在循环中生成函数。为什么会出现这种情况,以及如何消除它?