无法多次覆盖jQuery UI自动完成renderItem方法

Dav*_*nós 8 jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

它在发现的第一个自动完成中正确覆盖,但对其余部分不执行任何操作.相反,它会加载原始的_renderitem方法,您可以在https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js#L449上看到.

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

提前致谢

tom*_*omc 20

这个问题有一个解决方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个[JavaScript Object Literal](http://www.dyn-web.com/tutorials/obj_lit.php).显然你必须摆脱'....'和这个例子的最后一个逗号才能工作. (2认同)

Dam*_*max 9

您可以覆盖_renderItem

$.ui.autocomplete.prototype._renderItem = function (ul, item) { ... };
Run Code Online (Sandbox Code Playgroud)