2016-11-24 38 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。 –