@Paul_Morte

Как обратится к объекту из динамически созданного div?

Добавляю в боди div с классом «superior_magazine_point».
Создаю объект target_obj и хочу прикрепить его к последнему созданному диву.
Передаю все свойства из УЖЕ созданного объекта target в новый объект target_obj...
Я могу вывести свойство target_obj.name , но как мне наладить связь между target_obj и $('.superior_magazine_point:last'), чтобы при нажатии на $('.superior_magazine_point:last') можно было получить значение $('.superior_magazine_point:last').name?

Это нужно для того, чтобы я нажал на созданный див и мог получить доступ к объекту target_obj. Менять его свойства.

Все это будет в цикле, и объект target (вначале кода)= это распарсеный JSON.

var target;
target.name = 'Василий';

$('body').append('<div class="superior_magazine_point"></div>');
var target_obj = $('.superior_magazine_point:last');
for (var key in target ) {
  target_obj[key] = target[key];
}
$('.superior_magazine_point:last').click(function(){
alert( $(this).name ); /// Василия нет
});
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Используйте dataset, передавая в него ссылку на объект.
$('#block').data('obj', { a: 10, b: 20});
console.warn($('#block').data('obj').a); // Выведет 10

В нем можно хранить ссылки на объекты, и потом их легко получать через метод data. Также и будете писать $(this).data('obj').name
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
У вас target_obj - это не DOM-элемент, а jQuery-обертка, внутри которой есть ссылка на DOM-элемент.
Можете сделать console.log(target_obj[0]) и посмотреть.

При этом $('.superior_magazine_point:last') - это ДРУГАЯ обертка с ссылкой на тот-же самый DOM-элемент. Или на другой, если к моменту этого запроса были еще элементы добавлены.

Можно сделать так:
var newDiv = $('<div class="superior_magazine_point"></div>')
newDiv.data('name', 'Василий')
$('body').append(newDiv)

$(document).on('click', '.superior_magazine_point', function(){
  alert( $(this).data('name') )
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы