Jquery e.target.hasClass не работает
Я динамически создаю новый div
(с классом и идентификатором текстового поля) и некоторые другие элементы внутри него, а позже в моем коде я привязываю этот div
к событию клика и показываю элемент щелкнул, например:
$('#textbox_'+i).bind('click', function(event){
alert(event.target.className);
}
Это хорошо, и он даст мне textbox
как один из отображаемых классов.
Но event.target.hasClass()
, похоже, не работает. Итак, когда я делаю следующее, ничего не происходит:
$('#textbox_'+i).bind('click', function(event){
if(event.target.hasClass('textbox')) { alert('got it!'); }
}
Я попробовал несколько способов, и мне кажется, что event.target.hasClass()
просто не работает. Есть ли другой способ справиться с событиями или я делаю что-то неправильно?
Ответы
Ответ 1
Вы пытаетесь использовать метод jQuery hasClass()
для стандартного элемента DOM. Вам нужно преобразовать простой элемент JS DOM e.target
в объект jQuery, например:
$(event.target).hasClass('textbox')
И вы получите:
$('#textbox_'+i).on('click', function(event){
if( $(event.target).hasClass('textbox')) alert('got it!');
});
Обратите внимание на использование on()
, правильное закрытие функции click
, и вам не нужны фигурные скобки в инструкции if, если вы выполняете простое предупреждение.
Ответ 2
Если вы хотите использовать простой элемент JS DOM без использования jQuery:
event.target.classList.contains('textbox')