2016-11-24 21 views
8

Mam problem z wtyczką jQuery Autocomplete.Wydajność autouzupełniania jQuery spada wraz z każdym wyszukiwaniem

Wyszukując wiele razy terminem "element", początkowo działa dobrze: zajęcia css po najechaniu myszą są ładnie dodane i wszystko jest gładkie. Klikając poza wyskakującym okienkiem, aby je zamknąć i za każdym razem ponownie wpisywać, wydaje się, że wszystko działa wolniej:

Testowałem to na Chrome, który działa bardzo wolno i na Firefoksie, które wydaje się radzić sobie z nim nieco lepiej, ale ma również obniżenie wydajności .

Oto skrzypce z bardzo prostego kodu: https://jsfiddle.net/re9psbxy/1/

I kod:

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

Dla mnie problem występuje na jQuery UI-1.12.1 ale nie na jquery-ui-1.10.2 – Spikolynn

Odpowiedz

13

wpadłem na tej samej kwestii z autouzupełniania na jednym z moje aplikacje. Autouzupełnianie byłoby bardzo szybkie przy pierwszym otwarciu, ale po kilkukrotnym czasie stało się praktycznie bezużyteczne. Problem wydaje się być wyciekiem pamięci w widżecie menu, którego wydaje się używać autouzupełnianie. widać ten problem przez dodanie do wyszukiwania funkcją autouzupełniania:

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

Każdorazowe wyszukiwania, zobaczysz długość wiązań nadal rosnąć. Aby rozwiązać ten problem, wystarczy wyczyścić wiązaniami za każdym razem szukać:

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

Zamieściłem ten zaproponował pracę wokół do otwartego jQuery UI BŁĄD: https://bugs.jqueryui.com/ticket/10050

+1

Och, człowieku, uratowałeś mój dzień! –

+0

Szukałem tego przez wiele godzin, działa idealnie, ty. –