8

Ghi đè chính xác trong tìm kiếm tự động hoàn tất đầu tiên, nhưng không làm gì với phần còn lại. Thay vào đó, nó tải phương thức _renderitem ban đầu mà bạn có thể xem tại https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js#L449.Không thể ghi đè phương thức renderItem của giao diện người dùng jQuery tự động hoàn thành nhiều lần

$(".someClassWithMultipleItemsOnDOM").autocomplete({ 
     delay:500, 
     minLength:2, 
     source:path" 
     ..... 
}).data("autocomplete")._renderItem = function(ul, item) { 

cảm ơn trước

Trả lời

20

Có một cách giải quyết cho vấn đề này:

var autoc = { 
    delay: 500, 
    minLength: 2, 
    source: path, 
    ..... 
}; 

var renderItem = function (ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.label + "<br/>" + item.desc + "</a>") 
     .appendTo(ul); 
}; 

$(".someClassWithMultipleItemsOnDOM").each(function (i) { 
    $(this).autocomplete(autoc).data("autocomplete")._renderItem = renderItem; 
} 
+0

'autoc' là gì? Không có cách nào hoạt động – fmpdmb

+2

Đó là [JavaScript Object Literal] (http://www.dyn-web.com/tutorials/obj_lit.php). Rõ ràng bạn phải loại bỏ '....' và dấu phẩy cuối cùng để ví dụ này hoạt động. – tomc

+1

@tomc - bạn vừa lưu tôi GIỜ làm việc thêm. Làm các 'jquery-ui' folks bây giờ rằng một workaround là cần thiết cho nhiều phần tử autocomplete? – DevlshOne

9

Bạn có thể ghi đè lên _renderItem

$.ui.autocomplete.prototype._renderItem = function (ul, item) { ... }; 
+0

Bạn nên làm như vậy? –

+1

Đó là một cách để làm điều đó. Không được đề xuất cũng như không được khuyến cáo. – Damax