我正在开发一个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”
任何人都可以提出建议吗?
答案 0 :(得分:3)
升级后,您应该使用$(this).data("ui-autocomplete")
检索实例窗口小部件,而不是$(this).data("autocomplete")
。换句话说,使用ui-
前缀和窗口小部件的名称是必不可少的。
或者,可以使用instance
方法,如下所示:
$(this).autocomplete('instance')._renderItem = //...