切换类时,jQuery on()不起作用

时间:2014-09-01 12:17:50

标签: jquery

[编辑] 此代码可以正常工作

在同一个事件/类中找到了多个on()处理程序。 [/编辑]

我使用以下代码:

$selector.on('click', '.heya', function($e){
     alert('heya');
     jQuery(this).attr('class', 'byebye');
});


$selector.on('click', '.byebye', function($e){
     alert('byebye');
     jQuery(this).attr('class', 'heya');
});

现在单击其中一个元素一次正常工作,但再次单击它时会调用两个回调。不知怎的,前一个" on()"触发器没有被删除。谁知道为什么? 我知道我可以用不同的方式解决这个问题,但这将是最干净的解决方案......

3 个答案:

答案 0 :(得分:2)

改为使用addClassremoveClass方法。

$selector.on('click', '.heya', function($e){
     alert('heya');
     $(this).removeClass("heya").addClass("byebye");
});

$selector.on('click', '.byebye', function($e){
     alert('byebye');
     $(this).removeClass("byebye").addClass("heya");
});

答案 1 :(得分:0)

试试这个会帮助您解决问题。

$(".heya").on('click', function($e){
     alert('heya');
     $(this).attr('class', 'byebye');
});


$(".byebye").on('click', function($e){
     alert('byebye');
     $(this).attr('class', 'heya');
});

答案 2 :(得分:-1)

试试这段代码:

$(".heya,.byebye").on('click', function($e){

     $(this).toggleClass('byebye heya');

});

<强> JSFiddle