在jQuery中,是否可以为empty()方法提供一个持续时间,使对象在一段时间内(例如,500毫秒)淡入淡出?
下面是当前的代码:
$('#object_to_be_emptied').empty();
发布于 2011-06-07 18:13:23
不是的。淡出内容,然后在淡出完成时清空它。
$('#object_to_be_emptied').children().fadeOut(500, function() {
$('#object_to_be_emptied').empty();
});
不幸的是,这段代码调用empty
的次数和#object_to_be_emptied
下的元素一样多。如果你使用的是jQuery > 1.6,你可以通过动画的$.Deferred
支持来解决这个问题:
$('#object_to_be_emptied').children().fadeOut(500).promise().then(function() {
$('#object_to_be_emptied').empty();
});
发布于 2011-06-07 18:26:16
其他两个答案建议使用$('#object_to_be_emptied').children().fadeOut()
,,但实际上使用.children()
不是一个好主意,因为这将导致动画应用于包含元素中的每个子元素(杀死性能),因此对object_to_be_emptied
中的每个元素执行一次动画完成回调。不仅仅是几个元素,这将成为一个真正的问题。
相反,只需将动画应用于包含的元素,记住在重新填充它并希望再次显示它之后调用.fadeIn()
。
$('#object_to_be_emptied').fadeOut(500, function() {
$(this).empty();
});
还要注意,我在回调函数中使用了this
- jQuery将this
设置为DOM元素,该元素是回调函数的目标;在本例中为object_to_be_emptied
。使用this
省去了一些输入,并使代码更改变得更容易。
发布于 2011-06-07 18:13:47
你可能正在寻找类似这样的东西:
$('#object_to_be_emptied').children().fadeOut(500,function(){
$('#object_to_be_emptied').empty()
});
https://stackoverflow.com/questions/6269710
复制