8

Sostituisce correttamente nel primo completamento automatico trovato, ma non fa nulla con il resto. Invece carica il metodo _renderitem originale che è possibile vedere su https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js#L449.Impossibile sovrascrivere jQuery UI metodo di completamento automatico renderingItem più volte

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

grazie in anticipo

risposta

20

C'è una soluzione per questo problema:

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

ciò che è 'AUTOC'? Non funziona così – fmpdmb

+2

È un [oggetto JavaScript letterale] (http://www.dyn-web.com/tutorials/obj_lit.php). Ovviamente dovresti liberarti di "...." e dell'ultima virgola per far funzionare questo esempio. – tomc

+1

@tomc - mi hai appena salvato ORE di lavoro extra. Fai la gente 'jquery-ui' ora che è necessaria una soluzione alternativa per più elementi di completamento automatico? – DevlshOne

9

è possibile ignorare _renderItem

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

Si consiglia di farlo in questo modo? –

+1

È un modo per farlo. Né raccomandato né non raccomandato. – Damax