Итак, я хорошо знаю, что могу получить идентификатор элемента, подобного этому:
$('.class').on('click', () => {
console.log(this.id);
//this gets the id
});
$('.class').on('click', (e) => {
console.log(e.target.id);
//this gets the id as well
});
Проблема, с которой я здесь сталкиваюсь, заключается в том, что функции javascript не работают на моем DOM, когда я вводил HTML с javascript с $('someDiv).append("<div id='someId'></div>")
Так что единственный способ (по крайней мере, насколько мне известно) заставить его работать, это сделать:
$(document).on('click', '.class', (event) => {
console.log(event.target.id);
//and this prints undefined
});
Я получаю undefined
, поскольку this
относится к document
, а не к фактическому div, на который я нажимал.
Редактировать: я вижу, что между function()
и ()=>{}
есть разница попробовал это также:
$(document).on('click', '.class', function (e) {
console.log(e.target.id);
//and I still get a blank output
});
Я не могу вызвать $('.class').on('click')
напрямую, так как HTML вводится с javascript, как упомянуто выше. Поэтому я вынужден использовать '.class'
в качестве селектора в функции $(document).on('click')
следующим образом. Проблема в том, что вызванное событие показывает, что document
является целью, но не селектором, поэтому я получу документ только тогда, когда сделаю event.target
, таким образом, ничего не получая от event.target.id
.
Редактировать 2: использование события не работает, но this
возвращает элемент, на который я нажимаю, чтобы я мог получить его идентификатор с помощью this.id