60

我动态创建了一个新的div(带有“文本框”类和 ID)以及其中的一些其他元素,稍后在我的代码中我将其绑定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()不起作用。还有另一种处理事件的方法还是我做错了什么?

4

2 回答 2

105

您正在尝试hasClass()在标准 DOM 元素上使用 jQuery 方法。您需要将普通的 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 语句中不需要大括号。

于 2012-08-28T08:00:48.867 回答
49

如果你想在不使用 jQuery 的情况下保持你的 JS DOM 元素简单......

event.target.classList.contains('textbox')
于 2017-05-19T09:49:03.423 回答