Задать вопрос
zvermafia
@zvermafia
WebDev

Как получить объект элемента по событию который создан динамически в jquery?

Есть следующий код:
$(".items").on("click", ".item", deleteFile);

function deleteFile (e)
{
    alert($(this)); // Выдает [object Object], то есть я не могу получить например data атрибут...
    console.log($(this).data("file-name")); // Пусто :(...
  
    // Само события работает нормально!
}


HTML код:
<div class="items">
	<div class="item" data-file-name="file-name-one">Item #1</div>
	<div class="item" data-file-name="file-name-two">Item #2</div>
	<div class="item" data-file-name="file-name-three">Item #3</div>
	<div class="item" data-file-name="file-name-four">Item #4</div>
</div>


UPD #1: Отпечатка исправлена:
// ...$(this).data("data-file-name")...
    console.log($(this).data("file-name")); // Пусто :(...


UPD #2: оказывается alert() не для debugging ;)
  • Вопрос задан
  • 932 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 3
$(".items").on("click", ".item", deleteFile);

function deleteFile (e) {
   console.log($(e.target).data('fileName'));
}
Ответ написан
Комментировать
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
$(".items").on("click", ".item", function(){
var mydata = $(this).attr('data-file-name');
console.log(mydata);
});
Ответ написан
Комментировать
Palehin
@Palehin
Frontend
alert($(this));

Таким кодом вы не получите ничего кроме [object Object] даже если элемент существует.

...data("data-file-name"));

При получении атрибута data через data() не надо указывать префикс "data-". Если в элементе, например, есть атрибут "data-name", то получать его стоит вот так: $(elem).data("name");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@haa
Добрый день. Аналогичная проблема, не могу получить data-id из динамический создаваемых объектов.

<div class="comment_list">
	<div class="comment clearfix" data-id="1"> 
		<a href="" class="reply clearfix">Ответить</a>
	</div>
	<div class="comment clearfix" data-id="2"> 
		<a href="" class="reply clearfix">Ответить</a>
	</div>
	<div class="comment clearfix" data-id="3"> 
		<a href="" class="reply clearfix">Ответить</a>
	</div>
</div>


$('.comment_list').on('click', '.reply', function(){
		var id_comment = $(this).data('id');
		console.log(id_comment);
		alert(id_comment);
	});

alert() выводит undefined.
Если в место this поставить .comment то получает 1 элемент.

Как правильно получить id ? Спасибо!
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы