单击/设置 _renderItem 时获取 ui.item undefined

Click / getting ui.item undefined when _renderItem set

我正在使用 jquery 自动完成进行编码,我的目的只是用 ( [Image] [Name] ) 显示自定义视图。 When I just use autocomplete code with standard renderItem (without set up it) autocomplete works perfectly but without image I want to show however when I set _renderItem it shows items perfectly but when selecting / focusing it I got ui.item is undefined.请你帮助我好吗?这是我的代码:

使用 Jquery-ui 1.11.2 和 Jquery 1.10.2:

$("#iSearch").autocomplete({

    source: function (request, response) {

        var psField = "produtoNome";

        $.ajax({
            url: "/Search/PesquisaParcial",
            data: "{'psField':'" + psField + "', 'psTerm':'" + request.term + "'}",
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                //{ label: item.ProdutoFoto, value: item.ProdutoNome }
                response($.map(data, function (item) {
                    return { label: item.ProdutoFoto, value: item.ProdutoNome, data: item };
                }));
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
    },
    focus: function (event, ui) {
        $("#iSearch").val(ui.item.value);
        return false;
    },
    select: function (event, ui) {
        $("#iSearch").val(ui.item.value);
        return false;
    },
    minLength: 2
}).autocomplete("instance")._renderItem = function (ul, item) {
    var produtoFoto = item.data.ProdutoFoto == null ? "../Images/semfoto.png" : "../Images/" + item.data.ProdutoFoto;
    var FotoHtml = "<img src='" + produtoFoto + "' width='35' height='30' />";
    return $("<li>")
        .append("<a>" + FotoHtml + "&nbsp;&nbsp;" + item.value + "</a>")
        .appendTo(ul);
};

我发现问题了!!!

好吧,我会 post 在这里,因为它可以帮助遇到同样问题的其他人。我为解决此问题所做的工作:

  1. 通过 nuget 安装 jquery 1.11.2 和 jquery-ui 1.11.2
  2. 我在 index.cshtml 代码中对 jss 和 css 做了一些直接 link 然后我从那里删除了它们
  3. 在 BundleConfig.cs 中,我刚刚插入了对 jquery-ui 的引用:

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));
    
  4. 将 javascript 自动完成代码放入 Index.cshtml 脚本部分,如下所示:

@section 脚本{ ...Javascript 自动完成代码... }

  1. 自动完成工作愉快!