JQuery动画回调不在循环中工作

时间:2014-08-09 10:59:57

标签: jquery animation callback

我有一个由jquery操作的帖子列表,当删除表中的一个或多个帖子行时,我希望逐行fadeOut然后从DOM中删除,删除一行的代码如下:

$('.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元素,即帖子行没有被删除。有什么建议?提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是因为在循环中错误地使用了闭包变量。

回调内部this引用tr元素,因此您可以使用

for (var i = 0; i < selectedPostIds.length; i++) {
    $('.post#' + selectedPostIds[i]).parent('tr').fadeOut('slow', function () {
        $(this).remove();
    });
}

另见