Я ищу лучший способ создания некоторых "объектов" HTML, основанных на массиве объектов jQuery, которые я создал. Затем мне нужно, чтобы каждый из них был кликабельным, и вытащил значения из того, которое было нажато.
Немного фона... Я создаю объекты из ajax-вызовов для внешней службы API. Пользователь ищет имя, затем я получаю массив объектов с тремя свойствами (Id, ImageUrl и Name).
Мне интересно, есть ли "простой"/чистый способ отображения имени и изображения объекта и сделать его интерактивным... тогда, когда объект щелкнут, я хочу передать этот идентификатор обратно на контроллер, который будет в свою очередь, отобразит страницу сведений для выбранного объекта.
В настоящее время у меня есть все jQuery для создания объекта, а затем раздел результатов:
<div id="results"> </div>
Затем в jQuery я вызываю функцию, которая добавляется к тегу div:
var div = $("<div class='well clearfix'>");
div.append($("<h4>").html(item.name));
Я думаю, что основная проблема заключается в том, как создать тег div таким образом, чтобы я мог легко получить идентификатор объекта после его щелчка и передать его обратно контроллеру.
Используйте data() для хранения идентификатора элемента и делегирования события для обработки события click
var $div = $('<div />', {
'class': 'well clearfix item'
}).data('id', item.id);
$('<h4 />', {
'html': item.name
}).appendTo($div);
//more contents
$div.appendTo('#results');
для обработки события click (необходимо сделать в обработчике dom)
$('#results').on('click', '.item', function () {
var id = $(this).data('id');
console.log('id:', id)
})
data-
атрибуты, прочитай методом jquerydata()