jQuery Autocomplete插件出现问题。

通过使用术语“item”搜索多个时间,起初它可以正常工作:mouseover上的css类被很好地添加了,并且一切都很顺利。通过单击弹出窗口的外部以将其关闭,然后在每次一切看起来都较慢时再次键入:

我在非常慢的Chrome和Firefox上似乎进行了测试,Firefox似乎处理得更好,但性能却下降了。

这是一个非常简单的代码:
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 bug:https://bugs.jqueryui.com/ticket/10050

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

10-12 12:38
查看更多