我正在创建一个包含许多“小部件”的HTML页面(可以是1000个,其中许多小部件在display:none中不可见,这些小部件是由用户交互动态修改的)。
每个小部件都必须携带一些关于它的信息。
目前,我正在逐个构建DOM,并向每个小部件添加jQuery.data()。但是这个构建小模块的过程太慢了(在解析HTML上花费了很多时间),所以我想切换到一种新的方法,首先构建一个包含所有小部件的字符串,然后一次性用innerHTML将其添加到DOM中。但这不允许我在构建期间再使用.data()
由于所有小部件都有唯一的ID(目前只存储在.data()..中),我可以想到两个明显的解决方案:
给每个小部件一个id属性,小部件ID作为内容
给每个小部件一个ID为内容的data-widgetid属性
(与此类似,我有一个大的JavaScript散列,它将小部件I d链接到每个小部件的数据。)
我应该选择什么方法?
性能和资源是一个问题(同样在移动设备上)。
通过id属性,我干扰了DOM,所以我不知道这是否会有任何负面影响。(例如,可能是浏览器开始为内部构建一个额外的查找结构,否则我可以避免。我不是浏览器开发人员,所以我不知道是不是这样)

最佳答案

如果不需要通过元素的id获取这些元素,并且只使用它将数据与元素关联,我建议不要使用id
因为ids是唯一的,所以浏览器会快速地构建一个哈希表来检索元素。
因此,将ids添加到许多不需要它们的元素将不必要地增加哈希表的大小。
平均来说,哈希表中的搜索是id,因此大小无关紧要。不过,最坏的情况下,它是O(1),所以最好有一个小桌子,如果你可以的话。
这样,如果使用O(n)来获取其他元素,可能会更快。

07-24 17:53
查看更多