在jQuery中设置删除表行的动画

在jQuery中设置删除表行的动画,jquery,animation,row,slideup,Jquery,Animation,Row,Slideup,我已经编写了一些jQuery代码,以便在从表中删除行时使用“slideUp”动画。为了使动画看起来平滑,我用DIV标记将每个TD的内容包装在行中,并在DIV上调用slideUp函数,在动画完成后删除实际的TDs。其代码如下: $("tr[id$=" + rowID + "]").children("td").each(function() { $(this).children("div").slideUp(function() { $(this).parent().rem

我已经编写了一些jQuery代码,以便在从表中删除行时使用“slideUp”动画。为了使动画看起来平滑,我用DIV标记将每个TD的内容包装在行中,并在DIV上调用slideUp函数,在动画完成后删除实际的TDs。其代码如下:

$("tr[id$=" + rowID + "]").children("td").each(function() {
    $(this).children("div").slideUp(function() {
        $(this).parent().remove();
    });        
});
到目前为止,一切顺利。但是,我注意到这段代码并没有删除实际的TR,只是删除了它的内容,因此我添加了以下行来删除TR:

$("tr[id$=" + rowID + "]").remove();

问题是,在我添加了上面的行之后,动画停止工作。换句话说,行只是消失了,没有很好的滑动效果。有人知道为什么会这样,以及如何避开它吗

因为您正在删除包含所有动画元素的
tr
。没有更多的元素,没有更多的动画。考虑到所有的
slideUp都需要相同的时间,您可以将finish回调从
$(this.parent().remove()
更改为
$(this.trest('tr')。remove()

我编写了一个jQuery插件,让您可以这样做。您可以添加和删除行,而不需要用div或类似的东西包装数据。查看

最好的


弗莱奇

你在哪里加的那一行?我在parent()之后添加了它。remove()对我来说效果很好。嘿,Sett,我在我发布的前一行之后添加了行删除行。感谢您的快速反馈!我总是对这个网站的响应速度感到惊讶。谢谢你的快速回复,霍布斯。我理解你所说的删除包含动画元素的tr的后果,但我认为这些操作是按顺序发生的……我想情况并非如此。javascript的异步特性每次都让我着迷!顺便说一句,你的把戏很成功。谢谢实际上,动画调用(例如slideUp)是异步的,因为它们在计时器事件中完成工作。。。但无论如何,是的,他们不会等待完成,所以你的移除是在动画有机会正确启动之前启动的。