jQuery,selector匹配unset类?

时间:2014-02-24 14:37:55

标签: jquery click selector behavior removeclass

我遇到了一些关于某些jQuery代码的分类基础问题的问题,我想知道我是做错了什么或遇到了一个错误(可能是第一个)。

见这个例子:

// Expecting only one run
// Instead it keeps triggering
$('.switch').click(function () {
    // Show message with active classes
    var classes = $(this).attr('class');
    alert('Classes: '+classes);

    // Remove class, it shouldn't trigger again?
    $(this).removeClass('switch')
})

http://jsfiddle.net/aK6FB/2/

我有一个带有类的简单HTML标记。 jQuery脚本匹配该类并将其绑定到click事件。如果事件被触发,它将删除该类,因此,我希望它不会再次匹配(换句话说:它应该只执行一次)。

但是,代码每次都会执行。这是正常行为吗?

2 个答案:

答案 0 :(得分:0)

使用事件委托进行dom更改:

$(document).on('click','.switch',function () {
  var classes = $(this).attr('class');
  alert('Classes: '+classes);
  $(this).toggleClass('switch')
});

<强> working demo

答案 1 :(得分:0)

使用.one()

  

将处理程序附加到元素的事件。每个事件类型的每个元素最多执行一次处理程序。

$('.switch').one('click',function () {

Fiddle Demo