1

我在一个简单的 html 程序中使用 Jquery select2。当我单击它时,下拉菜单显示较晚。打开需要将近 6 秒。我有 2000 个列表项。所以请帮我解决它。提前致谢!!

4

1 回答 1

0

我有一个类似的问题,在我们的场景中,有一个可搜索的列表是可以接受的,所以对于我们知道大小可能很大的列表,我们使用 ajax 功能来动态加载数据。

$("#companySearchBox").select2({
        minimumInputLength: 1,
        allowClear : true,
        placeholder: "Search For Company",
        formatInputTooShort: function (input, min) { return "Start typing to search"; },
        ajax: {
            url: (crmServiceUrl + '/GetFilteredCompanies'),
            dataType: 'json',
            data: function (term) {
                return {
                    term: term
                };
            },
            type: "POST",
            results: self.ConvertData
        },
        initSelection: function (element, callback) {
            var data = [];
            var selected = element.val().split("|", 2);
            if (selected.length) {
                //element.val(selected[0]);
                callback({ id: selected[0], text: selected[1] });
            }
        },
        valueIdOnly : false
    });

    this.ConvertData = function (data) {
    var returnData = { results: [] }
    if (data.d.DataObject) {
        $.each(data.d.DataObject, function (key, value) {
            returnData.results.push({ id: value.Identity, text: value.Description });
        });
    }
    return returnData;
}

ConvertData 函数只知道如何从我们的自定义数据对象映射到选择项。

这可能不适合您的需求,但这是我真正可以针对大量数据进行优化的唯一方法。

于 2013-05-17T10:04:16.070 回答