如何管理 DOM 元素

Posted

技术标签:

【中文标题】如何管理 DOM 元素【英文标题】:How to manage DOM elements 【发布时间】:2012-04-18 18:10:45 【问题描述】:

我已经实现了无限滚动(即当滚动条到达 div 底部时加载记录)。它工作正常,但是在页面上加载太多记录后,页面变得太重并导致渲染缓慢。实际上,我正在使用这种技术作为 gridview 的替代品,那么在这种情况下我该如何管理繁重的 DOM?

【问题讨论】:

你在每个元素上都有额外的 javascript 事件吗? 也许在两边都做这个技术,上下滚动?向下滚动后达到 100 项时,删除或隐藏前 50 项。向上滚动时重新加载或再次显示它们。 @Aristos Nop 我的所有控件都是只读的。没有绑定事件 @binarious:你能给我一个简单的想法,如何在 div 中实现这一点。我也需要保持滚动条高度。谢谢 基于二进制注释,如果您对 html5 持开放态度,您可以从 DOM 中删除元素并将它们移动到本地存储中,以备后用。如果数据经常更改,则在访问者退出页面时将其从存储中删除。 【参考方案1】:
    将 DOM 元素减少到最少。 尽量减少包装器的数量。 最小化对 DOM 元素的访问,包括 (yahoo suggestions): 缓存对访问元素的引用 “离线”更新节点,然后将它们添加到树中 避免使用 JavaScript 修复布局 如果有任何可以减少的计算,例如获取行数(不要每次都计算,只需将新行数添加到当前),将其缓存(memoization wikipedia)李>

如果您对 DOM 元素的集合有任何类型的迭代并且您不使用 jQuery 进行迭代,请使用这个(JavaScript patterns 的建议):

for (var iteration = 0, limit = lengthOfElements; iteration++; iteration < limit)

for (var i = myarray.length; i--; )

【讨论】:

以上是关于如何管理 DOM 元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在eacharts里添加dom元素

如何将 DOM 元素附加到动态新添加的 DOM 元素

如何监听dom元素的显示隐藏事件

JavaScript中DOM,以及如何获取元素

Js如何获取某Dom元素的宽高

如何通过选择器访问 DOM 元素