jQuery / javascript缓存元素的效率?

时间:2011-02-16 01:00:03

标签: javascript jquery html

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

var myEl = $('.myclass');

然后你可以在将来访问$(myEl)并且你不需要再次搜索DOM,对吗?好吧,假设我有一个相当复杂的html结构,我需要经常访问几个不同的元素,比如20-30。这种类型的东西30次非常难看!

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您要分配ID,那么只需使用$('#id'),因为它使用getElementById,这非常快,并且可能没有比将它们放在某个对象哈希中慢得多。

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

答案 1 :(得分:0)

如果您确定要访问这些元素,那么这是一个很好的方法(否则会浪费资源)。另一件小事:如果您使用myEl而不是$(myEl)访问第一个示例中的元素,那将是最好的,因为$(myEl)必须执行一个函数(jQuery)。