jQuery Autocomplete 源属性作为 function(){} 非常慢

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

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

source: data

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

在第一种情况下,自动完成功能按我的预期工作。

在第二种情况下,自动完成功能偶尔会起作用,而且速度非常慢。有时浏览器会挂起 3-4 秒“无响应”,然后才再次释放。

与第一种情况相比,第二种情况有什么不同?

(我会在某个时候在此函数中添加一些过滤逻辑,但现在我正在这样进行测试)。

最佳答案

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

当使用source: data时自动完成功能会为您过滤结果集:

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

使用回调时source: function(request, response) { response(data) }没有应用任何过滤,因此您的页面正在生成 1.3MB json 的标记。

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

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

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

<罢工>

关于jQuery Autocomplete 源属性作为 function(){} 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754156/

相关文章:

jquery - 使用knockout.js动态添加 'td'和绑定(bind)

jquery-ui - Qunit 中 jQuery 小部件的单元测试

iphone - Xcode 4 自动完成错误

javascript - 为什么 <a href ="myurl"type ="submit"class ="btn">Pay here</a> 会清除用户表单?

jQuery:如何清除 asp.net 的 FileUpload 控件的上下文

javascript - HTML 列表,添加 JQuery 以交叉选择的项目。

javascript - jQuery - 无论滚动多低,屏幕上都会出现弹出框

jquery - 将 JQuery 对话框居中

javascript - Jquery 自动完成中的附加参数

android - 自动补全不显示在具有双屏幕的 Android Studio 中