9
renderItem
とrenderItemData
の違いを理解しようとしています。jQueryオートコンプリートのrenderItemとrenderItemDataの相違
これに関する関連ドキュメントが見つかりませんでした。
は、私は次のコードを持っている:
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var that = this,
currentCategory = "";
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
// with following code, when an element is selected
// in menu list, the corresponding value appears in searchbox
that._renderItemData(ul, item);
// with following code, when an element is selected
// in menu list, the corresponding value does NOT appear in searchbox
// I override renderItem below
**// that._renderItem(ul, item);**
});
}
});
function handleSearchBox() {
var data = [
{ label: "JAMES", category: "PEOPLE" },
];
$("#search").catcomplete({
delay: 0,
source: data,
select: function(event, ui) {
event.preventDefault();
str = JSON.stringify(ui)
// with renderItemData, str = item in source data
// with renderItem str = {}
alert(str)
var selectedObj = ui.item.label
$("#search").val(selectedObj);
}
});
$("#search").data("custom-catcomplete")._renderItem = function(ul, item) {
return $("<li></li>").data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
}
私の目標は、カスタムスタイルメニュー李項目にあります。私はどこに間違っているのか分からない。
'renderItem'は'、方法であり、 renderItemData'はオブジェクトです。 'renderItemData'と対話する必要はありません。 – Anthony
私は以下の説明を追加しました。もし_renderItemだけを使いたいのであれば、 'item.autocomplete'ではなく' ui-autocomplete-item'としてデータを設定する必要があります。 –
私はそれをよりよく/よりよく理解しようとしています。私はすぐに答えを受け入れるだろう。どうもありがとう。これは役に立ちます – GJain