我有一张桌子,当我删除一行时,它会使用slideUp动画。
$(id).find("td div").slideUp
我使用这个技巧在行上使用slideUp:animating-table-rows-with-jquery
显示所有列时没有问题,但是当我有隐藏列时,它只删除没有动画的行。我想这是来自slideUp的正常行为,但有一个技巧可以使它与动画一起使用吗?我正在考虑测试td是否被隐藏,什么也不做,否则会滑动,但我不认为这会有所作为。
答案 0 :(得分:0)
原因是在所有动画完成后,但每个动画完成后,才会调用slideUp
的回调。由于隐藏列中的div
不可见,因此不需要进行上滑动画,即立即完成,因此立即调用回调。
然而,回调会删除整行。
有几种方法可以解决这个问题。你自己的想法(不处理那些不可见的div
)是应该工作的一种方式。
另一种方法是设置超时删除行,而不是在回调中执行。
第三种方法是检查回调是否剩下div
,如果没有,则仅删除该行,例如
$(id).find("td div").slideUp(function() {
$(this).remove(); // remove the div itself
if ($(id).find("td div").length == 0) // if none are left
$(id).remove(); // then remove the row
});