javascript - jQuery/javascript 缓存元素以提高效率?

标签 javascript jquery html

是的,所以我想常识是对于您将要经常访问的元素,最好的方法是像这样缓存它们:

var myEl = $('.myclass');

然后您以后就可以访问 $(myEl) 而不需要再次搜索 DOM,对吗?好吧,假设我有一个相当复杂的 html 结构,我需要经常访问几个不同的元素,比如 20-30。这种事情做 30 次是非常丑陋的!

var elA = $('.myela'),
    elB = $('.myelb');

等等等等,你明白了..那么这样做有什么“不好”的地方吗,在所有这些元素上保持相同的类,但给它们一个唯一的 id,然后这样做:

var myElementObject={};
$('.myelems').each(function(){
     myElementObject[$(this).attr('id')] = $(this);
});

这样就好像我得到了一个 object.whateverId,这就是缓存的元素,所以现在我可以随心所欲地使用它们,而无需一直重新查询 DOM,这个假设是否正确,这是一种不好的做法吗?你们是怎么做到的?

谢谢!

最佳答案

如果您要分配 id,则只需使用 $('#id') 因为它使用 getElementById 非常快而且可能不会慢很多而不是将它们放在某个对象哈希中。

还可以考虑对这些元素应用一个公共(public)类或以其他方式对它们进行分组,以便您可以缓存 $('.mycommonclass')

关于javascript - jQuery/javascript 缓存元素以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011403/

相关文章:

javascript - 如何使按钮在单击时禁用/启用?

javascript - 如何将mathjax插件添加到ckeditor

html - 在左浮动 ul 列表中对齐文本

javascript - addClass 一段时间并使用 javascript 删除它

javascript - D3 旋转地球仪 : trouble incorporating zoom function

javascript - 将字符串中的日期转换为 Date 对象的优雅方法是什么?

javascript - 复选框根据表单 ID 选择全部

javascript - 如何根据月份中的数字获取日期名称

javascript - 如何使用 javascript 将大量选择选项移动到另一个选择控件?

html - 图像展开表格单元格