Основная проблема заключается в том, что вы пытаетесь добавить объект в строку, и, следовательно, тип приводится по принуждению, и в этом случае необходимые вам данные теряются.
Обходной путь может заключаться всоздайте массив объектов jQuery, которые вы хотите добавить, каждый из которых имеет свой соответствующий объект, хранящийся в атрибуте data
элемента, к которому можно легко получить доступ из обработчика делегированных событий, например:
var datata = data.map(function(o) {
return $('<li />', { text: o.name }).data('object', o);
});
$("ul").append(datata).on('click', 'li', function() {
console.log($(this).data('object'));
});
$(function() {
var data = [{
id: 1,
name: "namename1",
lname: "imlname1",
job: "artist",
ages: "17"
}, {
id: 2,
name: "namename2",
lname: "imlname2",
job: "artist",
ages: "25"
}, {
id: 3,
name: "namename3",
lname: "imlname3",
job: "artist",
ages: "15"
}];
var datata = data.map(function(o) {
return $('<li />', { text: o.name }).data('object', o);
});
$("ul").append(datata).on('click', 'li', function() {
console.log($(this).data('object'));
});
});
li {
border: 1px solid #ddd;
margin-top: -1px;
/* Prevent double borders */
background-color: #f6f6f6;
padding: 12px;
text-decoration: none;
font-size: 18px;
color: black;
display: block;
/* Make it into a block element to fill the whole list */
position: relative;
}
li:hover {
background-color: #adadad;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<input type="search" id="txtBox">
<ul id="ulTag"></ul>