Ich versuche, den Unterschied zwischen renderItem
und renderItemData
zu verstehen.Unterschied zwischen jQuery Autocomplete renderItem und renderItemData
Ich konnte keine relevante Dokumentation zu diesem Thema finden.
Ich habe folgenden Code:
$.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);
};
}
Mein Ziel ist es, individuelle Arteinzelteile Menü li. Ich bin mir nicht sicher, wo ich falsch liege.
'renderItem' ein Verfahren ist,' renderItemData' ist ein Objekt. Sie sollten nicht mit 'renderItemData' interagieren müssen. – Anthony
Ich fügte die folgende Erklärung hinzu, wenn Sie nur _renderItem verwenden wollten, dann müssen Sie die Daten als 'ui-autocomplete-item' und nicht als 'item.autocomplete' setzen –
Ich denke, ich habe es funktioniert. Ich versuche es besser zu verstehen. Ich werde die Antwort bald akzeptieren. Danke vielmals. das hilft – GJain