Jquery只获取事件的类目标

时间:2015-06-21 08:34:31

标签: javascript jquery html5

我想获得发射警报的课程

问题是<i>的所有类都会在

上发出警报

trigger('click'),我只是想让课程使用

这是一个类main

的示例

HTML

<i class="main mainBack another another2 another3"></i>

Jquery的

$(document).on('click','.main, .mainBack', function(e) {
   alert(e.target.className);
});

$('.main').trigger('click');

的jsfiddle

http://jsfiddle.net/474x5ew5/1/

2 个答案:

答案 0 :(得分:4)

事件处理程序绑定到不属于className的元素,因此e.target.className返回元素的所有classNames。

由于您使用的是trigger方法,因此您可以将自定义数据传递给处理程序:

$(document).on('click','.main, .mainBack', function(e, data) {
     if (data === 'main') {
       // ...
     }
});

$('.main').trigger('click', ['main']);

在手动触发事件时使用上述代码段,处理程序的第二个参数为main

另一种选择是使用jQuery .hasClass()方法来检查某个类名的存在。

if ( $(this).hasClass('main') ) {
   // ...
}

答案 1 :(得分:0)

我个人认为你应该为点击目标添加属性:

<i class="main mainBack another another2 another3" data-action="DoSomething"></i>
<i class="main mainBack another another2 another3" data-action="DoSomethingElse"></i>

然后在你的JavaScript中:

$(document).on('click','.main, .mainBack', function(e) {
    if (e.target.attr("data-action") == "DoSomething") {
        ...
    } else if (...) 
});