在jQuery中添加和删除内容
时间:2020-03-06 15:01:11 来源:igfitidea点击:
如果我使用jQuery创建一个函数,该函数添加一个空的div,在由div创建的空白内执行一些动画,然后删除div,则浏览器永远不会为该空的div留出空间(已设置高度和宽度)。
如果我没有在函数中删除空的div,那么浏览器将创建所需的空间,并且一切正常。但是,我确实需要在动画完成后删除由div创建的空白区域。
有没有一种方法可以使div移除排队,以便浏览器显示所需的行为?
解决方案
如果使用setTimeout无效吗?
通过在jQuery和setTimeout上进行Google搜索,我找到了一个示例,该示例将我带到了另一个方向。我认为出现此问题是因为div操作位于与实际动画不同的选择器上。这将导致即使在动画仍在播放时也可以创建和删除div。通过向div添加一个简单的动画语句,该语句将删除操作延迟到主动画完成之后,即可达到所需的效果。
问题在于,直到功能结束,DOM才会更新。因此,使用setTimeout将导致dom更新,并且100ms之后,其余功能可以继续。如果我们不希望看到新的div,则可以将位置设置为绝对值,将顶部设置为-5000之类的值。它将具有尺寸等,只是将不可见。我们也可以将可见性(在CSS中)设置为隐藏,以防万一我们担心它会显示在屏幕上。
一些jQuery效果具有回调,这些回调将在效果之后运行,例如:
$('#someDiv').slideDown(100, function() { $(this).remove(); });