Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法多次覆盖jQuery UI自动完成渲染方法_Jquery_Jquery Ui_Jquery Autocomplete_Jquery Ui Autocomplete - Fatal编程技术网

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

无法多次覆盖jQuery UI自动完成渲染方法,jquery,jquery-ui,jquery-autocomplete,jquery-ui-autocomplete,Jquery,Jquery Ui,Jquery Autocomplete,Jquery Ui Autocomplete,它在找到的第一个自动完成中正确覆盖,但对其余的不做任何操作。 相反,它加载原始的_renderitem方法,您可以在中看到该方法 提前感谢此问题有一个解决方法: var autoc = { delay: 500, minLength: 2, source: path, ..... }; var renderItem = function (ul, item) { return $("<li></li>") .

它在找到的第一个自动完成中正确覆盖,但对其余的不做任何操作。 相反,它加载原始的_renderitem方法,您可以在中看到该方法


提前感谢

此问题有一个解决方法:

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;
}
var autoc={
延误:500,
最小长度:2,
资料来源:路径,
.....   
};
var renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.label+”
    “+item.desc+”) .附录(ul); }; $(“.someClassWithMultipleItemsOnDOM”).each(函数(i){ $(this).autocomplete(autoc).data(“autocomplete”)。\u renderItem=renderItem; }
    您可以覆盖renderItem

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

    这是一个。显然,要使这个例子起作用,你必须去掉“…..”和最后一个逗号。@tomc-你刚刚为我节省了几个小时的额外工作。
    jqueryui
    的人现在需要一个解决方法来解决多个自动完成元素吗?建议这样做?这是一种方法。不推荐也不推荐。
    $.ui.autocomplete.prototype._renderItem = function (ul, item) { ... };