Подтвердить что ты не робот

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() просто не работает. Есть ли другой способ справиться с событиями или я делаю что-то неправильно?

4b9b3361

Ответ 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')