我有一个由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元素,即帖子行没有被删除。有什么建议?提前谢谢。
答案 0 :(得分:0)
这是因为在循环中错误地使用了闭包变量。
回调内部this
引用tr
元素,因此您可以使用
for (var i = 0; i < selectedPostIds.length; i++) {
$('.post#' + selectedPostIds[i]).parent('tr').fadeOut('slow', function () {
$(this).remove();
});
}
另见