如何将LARGE jQuery对象的数组合并为一个?

时间:2012-08-07 01:31:05

标签: javascript jquery performance

我正在尝试使用jQuery的add函数......但是当合并3000多个dom元素的对象时,它会冻结。有没有更快的方法可以实现这个目标?

var a = [];
a[0] = $('small');
a[1] = $('.no');
a[2] = $('.yes');
//a is array of jQuery objects

//make b an empty jQuery object. loop through a, adding each to b
var b = $();
for(var i in a) {
    b = b.add(a[i]);
}
//browser freezes for a bit
console.log(b);

编辑:不要质疑为什么我有这么多DOM元素,我正在压力测试我正在编写的jQuery插件:D

2 个答案:

答案 0 :(得分:5)

尽管我的评论,你可以做到

$('small, .no, .yes')

答案 1 :(得分:1)

这可能会有所帮助:API:http://api.jquery.com/jQuery.merge/

$.merge( [0,1,2], [2,3,4] )

请知道我是否遗漏任何东西,休息此api应该可以帮助你合并。 :)

$.merge()操作形成一个数组,其中包含两个数组中的所有元素。将保留数组中项目的顺序,并附加第二个数组中的项目。 $ .merge()函数具有破坏性。它改变了第一个参数来添加第二个参数。

var a = [];
a[0] = $('small');
a[1] = $('.no');
a[2] = $('.yes');

// now to merge 2 arrays

$.merge( a, b) // a & b are arrays.