javascript - jQuery 自动完成性能随着每次搜索而下降

标签 javascript jquery jquery-ui-autocomplete

我遇到了 jQuery 自动完成插件的问题。

通过使用术语“item”搜索多次,起初它工作正常:鼠标悬停时的 css 类添加得很好,一切都很顺利。通过单击弹出窗口外部将其关闭并在每次一切似乎都变慢时再次键入:

我在 Chrome 上测试过它,它变得非常慢,在 Firefox 上测试它似乎处理得更好一些,但也有性能下降。

这是一个代码非常简单的 fiddle : https://jsfiddle.net/re9psbxy/1/

还有代码:

var suggestionList = [];
for (var i = 0; i < 200; i++) {
  suggestionList.push({
    label: 'item' + i,
    value: i
  });
}

//initialize jQueryUI Autocomplete
jQuery('#autocomplete').autocomplete({
  source: suggestionList
});

HTML:

<input type="text" id="autocomplete"/>

最佳答案

我在我的一个应用程序上遇到了与自动完成相同的问题。第一次打开自动完成会非常快,但几次后就几乎没用了。问题似乎是自动完成功能似乎正在使用的菜单小部件中的内存泄漏。您可以通过将此添加到自动完成的搜索功能来查看问题:

search: function(e,ui){
 console.log($(this).data("ui-autocomplete").menu.bindings.length);
}

每次搜索时,您都会看到绑定(bind)的长度不断增加。要解决此问题,只需在每次搜索时清除绑定(bind)即可:

search: function(e,ui){
 $(this).data("ui-autocomplete").menu.bindings = $();
}

我将这个建议的解决方法发布到打开的 jquery ui 错误:https://bugs.jqueryui.com/ticket/10050

关于javascript - jQuery 自动完成性能随着每次搜索而下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782638/

相关文章:

javascript - jQuery UI 自动完成 - 在 KEYDOWN/KEYUP 后访问输入的搜索词

javascript - 如何在我的示例中正确使用 setState() ?

javascript - Onclick 用条形图中的新值重新绘制图表

javascript - 从 iframe 操作重定向父窗口

javascript - 如何制作一个小 helper 来引导访客通过我的配置器(包括示例)?

javascript - 我如何通过单击网站 Logo 打开和关闭左侧导航栏

jQuery 自动完成没有自动换行

asp.net - 服务器端 json 的自动完成问题

javascript - 如何重新运行/重用类构造函数

javascript - 如何在文本框中生成用户给定值的索引?