我目前在我的頁面的三個地方使用.data("ui-autocomplete")._renderItem = function(ul, item)
。現在我需要再添加一個,我完成了。jQuery自動完成給出TypeError:this._renderItem(...)是未定義的
但這次我得到錯誤信息
TypeError: this._renderItem(...) is undefined
奇怪的是,我只得到這一點,如果我的IF
測試爲假。
.data("ui-autocomplete")._renderItem = function(ul, item) {
// If only one row is returned and ID = 0, then return 'no result' message
if(item.id == '0') {
return jQuery("<li></li>")
.data("item.autocomplete", item)
.append("<div class='no-result'>"+ item.value + "</div>")
.appendTo(ul);
}
我不明白爲什麼它在這裏失敗,而不是在其他3個地方。某處有衝突嗎?
這是我的代碼
jQuery('#my-selector').autocomplete({
minLength: 2,
source: function(request, response) {
jQuery.ajax({
url: callback_url,
dataType: "json",
data: {
term: request.term
},
success: function(data) {
response(jQuery.map(data, function(item) {
return {
id: item.id,
value: item.name,
name_encoded: item.name_encoded
}
}));
}
});
},
select: function(event, ui) {
return false;
}
}).data("ui-autocomplete")._renderItem = function(ul, item) {
if(item.id == '0') {
return jQuery("<li></li>")
.data("item.autocomplete", item)
.append("<div class='no-result'>"+ item.value + "</div>")
.appendTo(ul);
}
};
更新
這種變化的作品。但我仍然不明白爲什麼我必須在這裏使用else
聲明,當我不在另外兩個autocomplete
函數中使用它時。
.data("ui-autocomplete")._renderItemData = function(ul, item) {
if(item.id == '0') {
return jQuery("<li></li>")
.data("item.autocomplete", item)
.append("<div class='no-result'>"+ item.value + "</div>")
.appendTo(ul);
} else {
return this._renderItem(ul, item).data("ui-autocomplete-item", item);
}
};
從查詢返回的數據與搜索詞some
[
{"id":"8186","name":"Some Are Thieves"},
{"id":"6149","name":"Somet"},
{"id":"6150","name":"Somethin'Else from SKECHERS"}
]
http://stackoverflow.com/questions/5590776/why-am-i-讓這個js錯誤 – Techie
http://stackoverflow.com/questions/9513251/cannot-set-property-renderitem-of-undefined-jquery-ui-autocomplete-with-html – PSR