我有一个<select>
元素显示来自大数据库的值。使用jQuery我需要选择相关的项目。问题是当我有大量的项目需要选择时,大约60,000,$(options2select).prop('selected',true)
的时间可能需要太长时间,大约50秒!
注意:之前我使用的是attr()
方法,但请在prop()
更快的地方阅读,而不是!
我正在寻找一种优化此任务的方法,但我找不到任何方法。任何建议将不胜感激。
答案 0 :(得分:5)
浏览器中select
列表中的60,000个选项在多个级别上都不可行,尤其是用户体验。它总是会变得缓慢而笨拙,更不用说用户难以理解了。因此,最好的办法是不要那样做,把事情分类等等。
回答实际问题:
假设options2select
是一个数组(因为你还没有说出它是什么),这可能会更快:
options2select.forEach(function(option) {
option.selected = true;
});
甚至
var n;
for (n = options2select.length - 1; n >= 0; --n) {
options2select[n].selected = true;
}
假设options2select
是一个选择器,与开头的document.querySelectorAll
大致相同:
var list = document.querySelectorAll(options2select);
Array.prototype.forEach.call(list, function(option) {
option.selected = true;
});
甚至
var list = document.querySelectorAll(options2select);
var n;
for (n = list.length - 1; n >= 0; --n) {
list[n].selected = true;
}
但同样,更快并不意味着快速。