в jQuery е.цель.hasClass не работает

Я динамически создаю новый div (С классом "textbox" и ID) и некоторыми другими элементами внутри него, а позже в моем коде я связываю это div к событию click и отобразить элемент щелкнул, например:

$('#textbox_'+i).bind('click', function(event){
    alert(event.target.className);
}

это прекрасно, и это даст мне textbox как один из отображаемых классов. Но!--5--> не работает. Поэтому, когда я делаю следующее, ничего не происходит:

$('#textbox_'+i).bind('click', function(event){
    if(event.target.hasClass('textbox')) { alert('got it!'); }
}

Я пробовал несколько разных способов, и мне кажется, что event.target.hasClass() просто не работает. Есть ли другой способ справиться с событиями или я делаю что-то неправильно?

2 ответов


вы пытаетесь использовать метод 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, если вы только выполняете простое предупреждение.


Если вы хотите продолжать использовать элемент JS DOM без использования jQuery:

event.target.classList.contains('textbox')