从jquery 1.8.2升级到1.11.2将引发以下错误: - " JavaScript运行时错误:无法设置属性' _renderItem'

时间:2015-02-26 11:24:19

标签: javascript jquery jquery-ui

我正在开发一个asp.net mvc web应用程序,我用jQuery 1.8.2和jquery-ui 1.8.2,下面的脚本运行良好: -

  $("input[data-autocomplete-source]").each(function () {
        var target = $(this);
        target.autocomplete({
            source: target.attr("data-autocomplete-source"), minLength: 1, delay: 1000,

            create: function () {
                $(this).data("autocomplete")._renderItem = function (ul, item) {
                    if (!item.extra)
                    {
                        return $('<li>').data('item.autocomplete', item).append('<a>' + '<b>' + item.label + '</b></a>')
                                                           .appendTo(ul);

                    }
                    return $('<li>').data('item.autocomplete', item).append('<a>' + '<b>' + item.label + '</b>     "<span class="autocompleteResult">' + item.status + ' <li class=" icon-arrow-right"></li> ' + item.techtype + '</span>"<br>' + '<span class="autocompleteResult">' + item.resourcename + '<span class="autocompleteResultSeperator"> | </span>' + item.customername + '<span class="autocompleteResultSeperator"> | </span>' + item.sitename + '<hr style="padding: 0px; margin: 0px;">' + '</span></a>')
                                    .appendTo(ul);
                };
            }
        });

    });

但是现在我已经将jquery从1.8.2升级到了1.11.2,并且我开始收到以下异常: -

  

0x800a138f - JavaScript运行时错误:无法设置属性   未定义或空引用的“_renderItem”

任何人都可以提出建议吗?

1 个答案:

答案 0 :(得分:3)

升级后,您应该使用$(this).data("ui-autocomplete")检索实例窗口小部件,而不是$(this).data("autocomplete")。换句话说,使用ui-前缀和窗口小部件的名称是必不可少的。

或者,可以使用instance方法,如下所示:

$(this).autocomplete('instance')._renderItem = //...