Jquery Select 2挂起浏览器

时间:2013-12-03 05:20:59

标签: jquery jquery-select2

$("#pick, #drop").select2({
    createSearchChoice: function (term, data) {
        if ($(data).filter(function() {
            return this.text.localeCompare(term) === 0;
        }).length === 0) {
            return {
                id:term, text:term
            };
        }
    },
    multiple: false,
    data: [ 
        {id:'ZMH', text: 'ZMH, 108 Mile Ranch, Canada'},
        {id:'AAH', text: 'AAH, Aachen, Germany'},    
        //and thousands others airpots.
    ] 
});

由于数据volumne firefox与select2挂起,任何人都可以建议我使用该功能,没有挂起工作顺利。例如,我如何使用xml填充数据或任何其他选项。

小提琴:http://jsfiddle.net/F574g/1/

2 个答案:

答案 0 :(得分:0)

尝试缩小搜索结果

使用匹配器。

实施例

$("#pick,#drop").select2({
    matcher: function(term, text,option) {
            return option.html().toUpperCase().indexOf(term.toUpperCase())==0; 
        },
    sortResults: function(results, container, query){
        if(query.term == ""){
            return results.slice(0,50);
        }else{
            return results;
        }
    },
        //... other setting
});

例如

data result => [印度孟买,澳大利亚,悉尼]

我输入时

=>没有匹配器的结果

india,mumbai,australia

=>结果与匹配器

印度

  
    

使用匹配器因为搜索澳大利亚我不打算输入i所以通过删除不需要的结果你可以阻止你的select2挂起

  

注意:也可以尝试sortResults

已编辑的代码

$("#pick,#drop").select2({
    multiple: false,
    query: function (query) {
        var data = {results: []};
        if(query.term == ""){
            for(var i = 0; i < 20 ;i++){
                data.results.push({id: keyword[i].id, text: keyword[i].text});
            }
        }else{
            for(var obj in keyword){
                if(keyword[obj].text.toLowerCase().indexOf(query.term.toLowerCase()) == 0){
                    data.results.push({id: keyword[obj].id, text: keyword[obj].text});
                }
            }
        }
            query.callback(data);
        }

});

<强> FIDDLE

答案 1 :(得分:0)

由于您提到了大型数据集,不会同时加载所有记录。

相反,请尝试使用 scrolling ,每个卷轴10/15。

啊,我有一个类似的问题正在Git中被跟踪,一个人(名为 rocanowi )推荐无限滚动方法

  

对于大型数据集,我认为最好不要加载所有数据   页面加载。如果使用数据库,最好使用“加载远程”   数据“示例并一次返回10个数据(例如)。或者你   可以使用“带有远程数据的无限滚动”示例来获取更多数据   每次搜索加载。