8

Se sobrescribe correctamente en el primer autocompletado encontrado, pero no se hace nada con el resto. En su lugar, carga el método _renderitem original que puede ver en https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js#L449.No se puede anular jQuery UI autocompletar el método renderItem varias veces

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

gracias de antemano

Respuesta

20

Hay una solución para este 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

lo que es 'autoc'? De ninguna manera funciona – fmpdmb

+2

Es un [JavaScript Object Literal] (http://www.dyn-web.com/tutorials/obj_lit.php). Obviamente, tendrías que deshacerte del '....' y la última coma para que funcione este ejemplo. – tomc

+1

@tomc - me acabas de ahorrar HORAS de trabajo extra. ¿La gente de 'jquery-ui' ahora que se necesita una solución para múltiples elementos de autocompletar? – DevlshOne

9

Puede anular _renderItem

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

Se recomienda hacerlo de esa manera? –

+1

Es una forma de hacerlo. Ni recomendado ni no recomendado. – Damax

Cuestiones relacionadas