2

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

4

4 回答 4

2

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

$('td').on('click', function(){
    $(this).addClass('clicked').off('click');
})
于 2013-06-25T08:09:28.817 回答
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
});
于 2013-06-25T08:09:24.640 回答
0

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

于 2013-06-25T08:10:32.277 回答
0

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

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

另一种解决方案可能是

$('table').on('click', ':not(.clicked)', function(){
    console.log('hanlded', this)
})
于 2013-06-25T08:08:05.450 回答