私はオートコンプリートを使用しています。リストにヘッダーを追加したいのですが、複雑になっています。これにはいくつか問題があります:これは私のコードです:
var autocompleteCounselor = function () {
$(this.el).find('.alternateCounselorAutocomplete').autocomplete({
minLength: 0,
source: this.counselorValidDelegates,
focus: function (event, ui) {
console.log(ui);
$(".alternateCounselorAutocomplete").val(ui.item.NAME());
return false;
},
select: function (event, ui) {
onAutocompleteAlternateCounselorSelected.apply(_self, [event, ui, _self.counselorFullValidDelegates]);
}
}).data("ui-autocomplete")._renderMenu = function(ul, items){
var self = this;
ul.append("<li><span>Name</span>"+
"<span>Title</<span>" +
"<span>Phone</<span> "+
"<span>Location</<span>"+
"<span>Department</span></li>");
$.each(items, function(index, item){
/*return $("<li>")
.append("<div class='listcounsuler'><span>" + "<a>" + item.NAME() + "</a>" + "</span>" + "<span>" + item.TITLE() + "</span>" + "<span>" + item.PHONE() + "</span>" + "<span>" + item.LOCATION() + "</span>" + "<span>" + item.DEPARTMENT() + "</span>" + "</div>")
.appendTo(ul);*/
self._renderItem(ul, item);
});
/* ul.append("</tbody></table>");*/
};
$('.alternateCounselorAutocomplete').autocomplete().data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li>")
.append("<div class='listcounsuler'><span>" + "<a>" +
item.NAME() + "</a>" + "</span>" + "<span>" + item.TITLE() +
"</span>" + "<span>" + item.PHONE() + "</span>" + "<span>" +
item.LOCATION() + "</span>" + "<span>" + item.DEPARTMENT() +
"</span></div>")
.appendTo(ul);
};
$('.alternateCounselorAutocomplete').autocomplete("search", "");
$(this.el).find('.counselorEdit').on('click', function () {
$('.alternateCounselorAutocomplete').autocomplete('close');
});
};
メニューは完全にレンダリングされます。問題は、li にフォーカスすると、コンソールに次のエラーが表示されることです: Uncaught TypeError: Cannot call method 'NAME' of undefined
フォーカスの項目が未定義であることがわかります: オブジェクト {item: undefined}
関数レンダー アイテムも正常に動作しています。必要な「li」が表示されます。
_renderItem を _renderItemData で変更しましたが、引き続き発生します。いくつかのことを試しましたが、解決策が得られませんでした。どんな助けでも大歓迎です。
よろしく