解锁某些类的单击处理程序

时间:2013-06-25 08:07:23

标签: javascript jquery class event-handling

我有一个我希望能够点击的表格单元格。但是一旦点击它就会有“.clicked”类。当任何表格单元格有这个类时,我不想被点击。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

此外,您可以使用.off()方法取消绑定任何事件。

$('td').on('click', function(){
    $(this).addClass('clicked').off('click');
})

答案 1 :(得分:1)

通过在事件处理程序的顶部插入一些代码可以轻松完成。

$('td').click(function(e) {
    if ($(this).hasClass('clicked')) {
        e.stopPropagation();
        e.preventDefault();
        return;
    }

    // the rest of your code here
});

另一种更为复杂的方式是使用事件委托,只有在单击单元时没有该类时才触发该函数:

$('table').on('click', 'td:not(.clicked)', function() {
    // your code here
});

答案 2 :(得分:0)

您可以使用.one()事件注册方法来执行此操作,一旦事件被触发,它将取消注册处理程序。

$('td').one('click', function(){
    console.log('hanlded', this)
})

另一种解决方案可能是

$('table').on('click', ':not(.clicked)', function(){
    console.log('hanlded', this)
})

答案 3 :(得分:0)

只需将:not(.clicked)添加到您用于排除点击的单元格的任何选择器。