मैं renderItem
और renderItemData
के बीच अंतर को समझने की कोशिश कर रहा हूं।jQuery स्वत: पूर्ण रेंडर के बीच अंतर Item और 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' एक वस्तु है। आपको 'रेंडरइटमडेटा' के साथ बातचीत करने की आवश्यकता नहीं है। – Anthony
मैंने नीचे स्पष्टीकरण जोड़ा, यदि आप केवल _renderItem का उपयोग करना चाहते हैं तो आपको डेटा को 'ui-autocomplete-item'' item.autocomplete' –
पर सेट करने की आवश्यकता है, मुझे लगता है कि मुझे यह काम मिल रहा है। मैं इसे और अधिक बेहतर समझने की कोशिश कर रहा हूं। मैं जल्द ही जवाब स्वीकार करूंगा। बहुत बहुत धन्यवाद। इससे मदद मिलती है – GJain