是的,所以我想常识是,对于你将要访问的元素,最好的方法是像这样缓存它们:
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,这个假设是否正确,这是一个不好的做法吗?你们是怎么做到的?
谢谢!
答案 0 :(得分:3)
如果您要分配ID,那么只需使用$('#id')
,因为它使用getElementById
,这非常快,并且可能没有比将它们放在某个对象哈希中慢得多。
还要考虑将公共类应用于这些元素或以其他方式对它们进行分组,以便您可以缓存$('.mycommonclass')
答案 1 :(得分:0)
如果您确定要访问这些元素,那么这是一个很好的方法(否则会浪费资源)。另一件小事:如果您使用myEl
而不是$(myEl)
访问第一个示例中的元素,那将是最好的,因为$(myEl)
必须执行一个函数(jQuery)。