代码之家  ›  专栏  ›  技术社区  ›  Joe Brinkman

在jQuery中添加和删除内容

  •  2
  • Joe Brinkman  · 技术社区  · 17 年前

    如果我用jQuery创建一个函数,添加一个空div,在div创建的空白空间中执行一些动画,然后移除div,浏览器永远不会为空div腾出空间(设置了高度和宽度)。

    如果我不删除函数中的空div,那么浏览器将创建所需的空间,并且一切正常工作。但是,当动画完成时,我真的需要DIV创建的空白空间。

    4 回复  |  直到 17 年前
        1
  •  3
  •   Michał Perłakowski    9 年前

    $('#someDiv').slideDown(100, function() { 
        $(this).remove(); 
    });
    
        2
  •  1
  •   Joe Brinkman    17 年前

    通过在jQuery和setTimeout上进行Google搜索,我找到了一个让我走上另一条道路的例子。我认为,出现这个问题是因为div操作是在一个与实际动画不同的选择器上进行的。这将导致即使在动画仍在发生时也创建和移除div。通过在div中添加一个简单的animate语句,将删除延迟到主动画完成之后,然后我就可以达到所需的效果。

        3
  •  0
  •   roenving    17 年前

        4
  •  0
  •   Sugendran    17 年前

    问题是在函数结束之前DOM不会更新。因此,使用setTimeout将导致dom更新,100毫秒后,函数的其余部分可以继续。如果你不想看到新的div,我会将位置设置为绝对,顶部设置为-5000。它会有尺寸等,只是看不见。您还可以将可见性(在css中)设置为隐藏,以防它出现在屏幕上。