0

我正在尝试使用 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

4

2 回答 2

5

尽管我的评论,你可以做

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

于 2012-08-07T01:34:05.900 回答
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.
于 2012-08-07T01:34:55.057 回答