变态的全选(上万个复选框的全选你享受过吗?)

hrj324 2011-05-24
学了一招。
zygege 2011-05-25
int08h 写道
jquery的循环真的不算慢,楼上可以试试1W个复选框用jquery循环和直接DOM循环差多少,我估计差不到5%

1W个checkbox全选是没做过,但在地图上放1W个标记这事倒是干过,有些优化是有固定方法的,比如移除DOM,不要再去想更复杂的了……

别说1W个了,我曾经达到几百个,一次性CHECK,用Jq马上页面假死,用DOM速度那叫一个快。
yizhilong28 2011-05-25
建议参考下分页
int08h 2011-05-25
zygege 写道
int08h 写道
jquery的循环真的不算慢,楼上可以试试1W个复选框用jquery循环和直接DOM循环差多少,我估计差不到5%

1W个checkbox全选是没做过,但在地图上放1W个标记这事倒是干过,有些优化是有固定方法的,比如移除DOM,不要再去想更复杂的了……

别说1W个了,我曾经达到几百个,一次性CHECK,用Jq马上页面假死,用DOM速度那叫一个快。


var fragment = document.createDocumentFragment();
for (var i = 0; i < 10000; i++) {
    var input = document.createElement('input');
    input.type = 'checkbox';
    fragment.appendChild(input);
}
document.body.appendChild(fragment);

var jq = $('input');
var dom = document.getElementsByTagName('input');

console.time('jquery');
jq.attr('checked', true);
console.timeEnd('jquery');

console.time('dom');
for (var length = dom.length, i = 0; i < length; i++) {
    dom[i].checked = false;
}
console.timeEnd('dom');


以上测试代码,运行结果如下:

jquery: 77598ms
dom: 79126ms

不知道你那的结果如何……
hz020815 2011-05-25
建议不要用IE运行。。。
lzqustc 2011-05-25
love_ai87 写道
我更想知道1w个单选框在页面上画出来了是个什么场景~~~

me too.
Aaron5 2011-05-26
lzqustc 写道
love_ai87 写道
我更想知道1w个单选框在页面上画出来了是个什么场景~~~

me too.

在某国有垄断企业导出excel应用中。非不给你分页。我就想来1万条试试,哪天高兴了10万条也说不定。你说我看得了么!?只有一句话:这你不要管。
Aaron5 2011-05-26
int08h 写道
不移出DOM,用了113232ms
移出DOM,用了157ms
根本不需要考虑别的方式了,直接移出DOM操作就行

var t = $('#tttt').detach();
t.find(':checkbox').attr('checked', true);
t.appendTo('body');


非常感谢啊!原来还有这种方法。哎,以后得加强下某个方面了。在公司里前后台都做,部署也做。没一个精通的。太感谢了。
abraham_xi 2011-05-26
上万个复选框的全选?为什么会有这样的页面?我觉得研究全选是其次了吧,这个页面出来要多长时间??
wanglei2999 2011-05-26
上帝 变态的上帝
Global site tag (gtag.js) - Google Analytics