jQuery UI自动完成缺少_renderItem
问题描述:
这很奇怪。jQuery UI自动完成缺少_renderItem
$.fn.autoList = function() {
return this.each(function() {
var self = this;
// initiate autocomplete
$(self).autocomplete({
source: _li_data,
minLength: 2,
select: function (event, ui) {
ui.item.checkbox.prop('checked', true).trigger('change');
ui.item.checked = !ui.item.checked;
$(event.target).val('');
return false;
}
})
.data('autocomplete')._renderItem = function (ul, item) {
if (item.checked) {
return $("<li>")
.text(item.label)
.addClass('preselected')
.appendTo(ul);
}
};
});}
当输入和结果应该呈现之前,我得到以下错误。 Uncaught TypeError: Cannot read property 'data' of undefined
在jQuery的UI-1.9.0.js:6672,其具有下面的代码
_renderItemData: function(ul, item) {
return this._renderItem(ul, item).data("ui-autocomplete-item", item);
},
我想要做的是一个“预选”类添加到-li-项目中的-ul-自动完成下拉列表。我坚持...
答
如果(item.checked)
条件为false,_renderItem
函数将返回undefined
。它可能只是需要一个else
块:
// ...
._renderItem = function (ul, item) {
if (item.checked) {
return $("<li>")
.text(item.label)
.addClass('preselected')
.appendTo(ul);
}
// else
return $("<li>").appendTo(ul);
};
你检查[这](http://*.com/questions/14461787/jqueryui-1-10-0-autocompleter-renderitem-problems)? – anpsmn 2015-03-13 09:52:01
是的。不幸的是,使用数据('uiAutocomplete')或数据('ui-autocomplete')或普通数据('autocomplete')不起作用并引发相同的错误。使用__renderItem不会引发错误,但它也不会执行任何操作。 __renderItem = function(ul,item){ \t \t \t console.log(item,'item'); \t \t}; 不记录。 – pop 2015-03-13 09:56:03
那么,如果if条件'(item.checked)'为false,'_renderItem'函数将返回'undefined'。显然你不能调用那个 – blgt 2015-03-13 10:00:54