我有这个构建jquery对象集合的Jquery代码。执行大约需要600毫秒。 我想优化它:
var tousBt = $('img.boutonReduire');
var stack = $('');
tousBt.each( function() {
var id = $(this).attr('id');
stack = stack.add('#table' + id).add('#img' + id);
});
你看到我能做些什么吗?结果必须是jquery对象的集合。
编辑:我获取所有堆栈元素并隐藏它们:stack.addClass('hideit');大约有125个元素。而$('*')。长度可以提供大约7100个元素。
答案 0 :(得分:3)
首先,删除迭代函数中的赋值操作。 stack
是一个实例---没有必要重新分配它:
var tousBt = $('img.boutonReduire');
var stack = $('');
tousBt.each( function() {
var id = $(this).attr('id');
stack.add('#table' + id).add('#img' + id);
});
如果你多次调用add()
,我还建议远离jQuery开销。这是一个使用轻量级数组来累积选择器的版本:
var tousBt = $('img.boutonReduire');
var stack = [];
tousBt.each( function() {
var id = this.id;
stack.push('#table' + id);
stack.push('#img' + id);
});
然后,获取可以与jQuery一起使用的最终选择器:
var selector = stack.join(',');
//$(stack.join(','));
编辑:这可能看起来绝对是迟钝的,但这个可能实际上是最快的(至少值得一试):
var tousBt = $('img.boutonReduire');
tousBt.each(function() {
var id = this.id;
$('#table' + id).addClass('selected');
$('#img' + id).addClass('selected');
});
var stack = $('.selected');