2016-11-24 60 views
8

我有一个jQuery自动完成插件的问题。jQuery自动完成性能下降与每个搜索

通过用术语“item”搜索多次,首先它工作正常:在鼠标悬停上的css类被很好地添加,并且一切都很流畅。点击之外的弹出窗口的关闭它每一次的一切似乎工作较慢再次键入:

我测试了它在Chrome其变得非常缓慢,在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"/> 
+0

对我来说,jQuery的-UI-1.12.1出现问题但不是在jquery-ui-1.10.2 – Spikolynn

回答

13

我碰到了同样的问题与自动完成上一个我的应用程序第一次打开时自动完成的速度会非常快,但几次之后它实际上变得毫无用处。该问题似乎是自动完成似乎正在使用的菜单窗口小部件中的内存泄漏。您可以通过添加这种搜索自动完成功能看到的问题:

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

每次搜索时,你会看到绑定的长度继续增长。为了解决这个问题,只需清除绑定每次搜索:

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

我张贴了这个建议各地工作,以开放的jQuery UI的错误:https://bugs.jqueryui.com/ticket/10050

+1

哦,男人,你救了我的一天! –

+0

我一直在寻找这个小时,完美的作品,ty。 –