jquery e.target.hasClass不工作

use*_*627 43 jquery events onclick classname

我动态创建一个新的div(带有"textbox"类和ID),以及其中的一些其他元素,稍后在我的代码中我将其绑定div到click事件,并显示单击的元素,如下所示:

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

这很好,它会给我textbox一个显示的类.但event.target.hasClass()似乎没有用.所以,当我执行以下操作时,没有任何反应:

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

我尝试了几种不同的方式,在我看来,event.target.hasClass()这是行不通的.有没有其他方式来处理事件或我做错了什么?

ade*_*neo 86

您正在尝试hasClass()在标准DOM元素上使用jQuery方法.您需要将普通的JS DOM元素e.target转换为jQuery对象,如下所示:

$(event.target).hasClass('textbox')
Run Code Online (Sandbox Code Playgroud)

你最终得到:

$('#textbox_'+i).on('click', function(event){
     if( $(event.target).hasClass('textbox')) alert('got it!');
});
Run Code Online (Sandbox Code Playgroud)

注意使用on(),正确关闭click函数,如果只执行简单警报,则不需要if语句中的花括号.

  • hasClass是一个jQuery函数,.className是普通的javascript (5认同)
  • 第一个包装在jQuery中,因此它是一个jQuery对象,可以与jQuery方法一起使用.第二个是在函数`event`中返回的普通javascript对象,可以使用普通的javascript方法,但不能用于jQuery方法. (2认同)

iar*_*oyo 26

如果你想在不使用jQuery的情况下继续使用你的JS DOM元素:

event.target.classList.contains('textbox')
Run Code Online (Sandbox Code Playgroud)