.data( "ui-autocomplete" )._renderItem = function( ul, item )
現在、ページの 3 か所で使用しています。もう 1 つ追加する必要があり、これで完了です。
しかし、今回はエラーメッセージが表示されます
TypeError: this._renderItem(...) は未定義です
奇妙なことは、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
しかし、他の 2 つの関数でステートメントを使用していないのに、なぜここでステートメントを使用する必要があるのか 、まだ理解できません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"}
]