2016-11-24 14 views
8

Tôi gặp sự cố với plugin jQuery Autocomplete.Hiệu suất Tự động điền của jQuery đi xuống với mỗi tìm kiếm

Bằng cách tìm kiếm nhiều lần với thuật ngữ "mục", lúc đầu nó hoạt động ổn: các lớp css khi di chuột được thêm vào độc đáo và mọi thứ đều mượt mà. Bằng cách nhấp vào bên ngoài cửa sổ bật lên để đóng cửa sổ lại và nhập lại mỗi lần mọi thứ có vẻ hoạt động chậm hơn:

Tôi đã thử nghiệm trên Chrome chạy rất chậm và trên Firefox có vẻ tốt hơn nhưng cũng có hiệu suất xuống cấp .

Đây là một fiddle với mã rất đơn giản: https://jsfiddle.net/re9psbxy/1/

Và mã:

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

Đối với tôi vấn đề này xảy ra trên jquery-ui-1.12.1 nhưng không phải trên jquery-ui-1.10.2 – Spikolynn

Trả lời

13

Tôi chạy vào cùng một vấn đề với autocomplete trên một trong những những ứng dụng của tôi. Tự động hoàn thành sẽ rất nhanh khi lần đầu tiên nó mở ra, nhưng sau vài lần nó trở nên vô dụng. Sự cố có vẻ như bị rò rỉ bộ nhớ trong tiện ích trình đơn mà tự động hoàn tất dường như đang sử dụng. Bạn có thể xem vấn đề bằng cách thêm chức năng này vào chức năng tìm kiếm của tự động hoàn tất:

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

Mỗi lần bạn tìm kiếm, bạn sẽ thấy độ dài của các ràng buộc tiếp tục tăng. Để sửa lỗi này, chỉ cần xóa các ràng buộc mỗi lần bạn tìm kiếm:

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

Tôi đăng này gợi ý việc xung quanh để mở jquery ui lỗi: https://bugs.jqueryui.com/ticket/10050

+1

Oh người đàn ông, bạn đã cứu ngày của tôi! –

+0

Tôi đã tìm kiếm điều này trong nhiều giờ, hoạt động hoàn hảo, ty. –

Các vấn đề liên quan