JQueryUI 1.10.0自动完成renderItem问题
我尝试了一个解决方案,将’autocomplete’重命名为’ui-autocomplete’(使用JQueryUI 1.10.0,JQuery 1.8.3),但仍然出现以下错误:
TypeError:$(…)。autocomplete(…)。data(…)未定义
} }).data('ui-autocomplete')._renderItem = function (ul, item) {
它在1.10.0中定义但我需要覆盖:
_renderItem: function( ul, item ) { return $( "" ) .append( $( "" ).text( item.label ) ) .appendTo( ul ); },
这是我的整个代码:
var ajaxCall_QuickSearchCompanyId; $('#QuickSearchCompanyId').autocomplete({ minLength: 2, delay: 300, source: function (request, response) { if (ajaxCall_QuickSearchCompanyId) { ajaxCall_QuickSearchCompanyId.abort(); } ajaxCall_QuickSearchCompanyId = $.ajax({ url: '/Advertiser/Autocompleter/CompaniesDetailed', dataType: 'json', data: { q: request.term }, success: function (data) { $('#QuickSearchCompanyId').removeClass('ui-autocomplete-loading'); response($.map(data, function (item) { return { label: item.ID, value: item.Name, subsidiaries: item.Subsidiaries, category: item.Category, url: (item.URL == null) ? '' : item.URL, parentName: item.ParentName, isReported: item.IsReported } })); } }); } }).data('ui-autocomplete')._renderItem = function (ul, item) { String.prototype.chunk = function (n) { var ret = []; for (var i = 0, len = this.length; i < len; i += n) { ret.push(this.substr(i, n)); } return ret; }; ul.attr('id', 'ul_QuickSearchCompanyId'); return $('') .data('ui-autocomplete-item', item) .append("" + ((item.parentName != '[[root]]') ? (item.parentName + ': ') : '') + item.value + " " + item.category + "
") .appendTo(ul); };
任何想法都会受到极大的关注。
代替
$('selector').data('ui-autocomplete')._renderItem = function (ul, item) { };
你应该使用
$('selector').data('uiAutocomplete')._renderItem = function (ul, item) { };
我有同样的问题。 你应该使用$('selector').data('autocomplete')._renderItem = function (ul, item) {...};
或者只需打开控制台并键入以下内容: $('div').autocomplete().data()
在那里你会看到你必须使用的方法。 就我而言,它只是’autocomlete’
我找到了解决方案!
好吧,我会分享你的经验。 当我遇到同样的问题时,我听到人们谈论将“ui-autocomplete”改为“uiAutocomplete”或者只是“自动完成”,但这是错误的。
正确的是“ui-autocomplete”,这个问题的解决方案不是这个。 当我更改代码时,我解决了我的问题:
.data('ui-autocomplete')._renderItem = function (ul, item)
至:
.__renderItem = function(ul, item)
尝试这样做并告诉我发生了什么。
我对这一行有同样的问题
.data("autocomplete")._renderItem = function (ul, item) {
通过添加任何这些,我能够克服错误
1 - .data('ui-autocomplete')._renderItem = function (ul, item) { 2 - .data('uiAutocomplete')._renderItem = function (ul, item) { 3 - .__renderItem = function(ul, item) {