在javascript数组中维护对DOM对象和/或jQuery对象的引用是不是一个坏主意?

时间:2011-10-22 06:03:02

标签: javascript jquery dom

我正在开发一个Web界面,需要创建大量(数百个)DOM对象,并在底层数据发生变化时动态更新或删除。我正在努力找到最有效的策略来跟上所有对象,以便应用程序尽可能优雅地扩展。

我的第一个倾向是创建匿名引用DOM元素的数组和哈希表,以便我可以快速找到它们并发送任何必要的更改。这种方法有问题吗?改为在DOM树中查找它们会更好吗?

jQuery对象怎么样?是否更好地在运行中频繁创建它们并允许它们被垃圾收集或者在某种结构化缓存中保留大量(数百个)它们?

2 个答案:

答案 0 :(得分:2)

最好保留一个jQuery对象,而不是多次创建它们。但请记住,Javascript中的瓶颈是DOM操作,而不是保存其元素的引用。

我刚刚用10000个div进行了一些测试,并且在数组/ jquery对象中拥有所有内容比在DOM中每次查找都要快得多。

使用IDS和索引实现最高效率(许多人使用没有本机类选择器的旧浏览器),即:

var allElements = $("#container").children()
allElements.eq(10).hide()

答案 1 :(得分:1)

时间将由操纵元素的内容来控制,而不是通过查询它们(特别是如果使用选择器查询使用elementID,因为getElementById非常快)。 我认为这更多的是代码结构问题,而不是性能问题。保持此哈希表与DOM同步可能需要很多额外的代码,这是我看到的主要问题。 (顺便说一句,听起来你真正想要的是一种声明性地表达DOM中哪些元素与哪些数据绑定的方式。有框架可以做到这一点,并且它们负责进行更新并保持所有内容同步。)