prop()需要太长时间

时间:2014-12-15 09:54:18

标签: javascript jquery

我有一个<select>元素显示来自大数据库的值。使用jQuery我需要选择相关的项目。问题是当我有大量的项目需要选择时,大约60,000,$(options2select).prop('selected',true)的时间可能需要太长时间,大约50秒!

注意:之前我使用的是attr()方法,但请在prop()更快的地方阅读,而不是!

我正在寻找一种优化此任务的方法,但我找不到任何方法。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:5)

浏览器中select列表中的60,000个选项在多个级别上都不可行,尤其是用户体验。它总是会变得缓慢而笨拙,更不用说用户难以理解了。因此,最好的办法是不要那样做,把事情分类等等。

回答实际问题:

  1. 假设options2select是一个数组(因为你还没有说出它是什么),这可能会更快:

    options2select.forEach(function(option) {
        option.selected = true;
    });
    

    甚至

    var n;
    for (n = options2select.length - 1; n >= 0; --n) {
        options2select[n].selected = true;
    }
    
  2. 假设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;
    }
    
  3. 但同样,更快并不意味着快速