Используя Автозаполнение пользовательских данных и отображение в качестве примера, рассмотрим следующее.
$(function() {
var imgBase = "https://jqueryui.com/resources/demos/autocomplete/images/";
var projects = [{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "the official user interface library for jQuery",
icon: "jqueryui_32x32.png"
},
{
value: "sizzlejs",
label: "Sizzle JS",
desc: "a pure-JavaScript CSS selector engine",
icon: "sizzlejs_32x32.png"
}
];
function showItems(obj, trg) {
if (trg == undefined) {
trg = $(".item-list");
}
trg.html("");
$.each(obj, function(index, item) {
var itemDiv = $("<div>", {
class: "item ui-widget-content"
}).appendTo(trg);
$("<img>", {
src: imgBase + item.icon
}).appendTo(itemDiv);
$("<div>", {
class: "ui-widget-header"
}).html(item.label).appendTo(itemDiv);
$("<div>", {
class: "item-desc"
}).html(item.desc).appendTo(itemDiv);
});
}
$("#project").autocomplete({
minLength: 0,
source: projects,
focus: function(event, ui) {
$("#project").val(ui.item.label);
return false;
},
select: function(event, ui) {
$("#project").val(ui.item.label);
$("#project-id").val(ui.item.value);
return false;
}
});
$("#project").autocomplete("instance")._renderMenu = function(ul, items) {
var that = this;
showItems(items);
$.each(items, function(index, item) {
that._renderItemData(ul, item);
});
};
});
#project-label {
display: block;
font-weight: bold;
margin-bottom: 1em;
}
#project-icon {
float: left;
height: 32px;
width: 32px;
}
#project-description {
margin: 0;
padding: 0;
}
.item-list {
margin: 20px;
}
.item-list .item {
display: inline-block;
width: 150px;
height: 150px;
padding: 0.5em;
margin-right: 3px;
margin-bottom: 3px;
text-align: center;
border-radius: 6px;
}
.item-list .item img {
width: 75px;
height: 75px;
margin: 0 auto;
}
.item-list .item .item-desc {
font-size: 0.85em;
width: 100%;
text-align: left;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="project-label">Select a project (type "j" for a start):</div>
<img id="project-icon" src="https://jqueryui.com/resources/demos/autocomplete/images/transparent_1x1.png" class="ui-state-default" alt="">
<input id="project">
<input type="hidden" id="project-id">
<div class="item-list ui-widget"></div>
Хитрость здесь в том, чтобы использовать _renderMenu
, поскольку в нем будет Объект, содержащий все потенциальные результаты.Когда меню отображается, вы можете передать данные объекта в другую функцию, которая затем может отображать элементы на основе элементов.
Надеюсь, что это поможет.