jQuery自动完成源属性as function(){}非常慢

时间:2011-10-13 12:31:46

标签: jquery jquery-ui autocomplete jquery-ui-autocomplete

我有两个使用相当大的json对象(1.2mb)的测试用例:

source: data

source: function (request, response) {
                response(data);
            }

在第一种情况下,自动完成功能正如我所料。

在第二种情况下,自动完成功能偶尔会起作用并且非常慢。有时浏览器会在重新释放之前挂起3-4秒“没有响应”。

第二种情况与第一种情况相比发生了什么不同?

(我会在某个时候在这个函数中加入一些过滤逻辑,但是现在我正在测试这个)。

1 个答案:

答案 0 :(得分:5)

您的数据集在作为本地对象传递时会被过滤,但在使用回调时不会被过滤(这将是程序员的责任)。

使用source: data自动填充过滤器为您设置结果集:

response($.ui.autocomplete.filter(array, request.term));

使用回调source: function(request, response) { response(data) }时,不会应用过滤,因此您的页面会为1.3 MB的json生成标记。

当自动完成从本地源加载数据时,它会缓存数据。远程检索时,默认情况下不缓存。

此jQuery UI自动完成文档解释了该行为,并建议如何为远程调用实现缓存。

http://jqueryui.com/demos/autocomplete/#remote-with-cache

<击>