取消绑定某些类上的单击处理程序



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

您还可以使用.off()方法解除任何事件的绑定。

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

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

$('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
});

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

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

另一种解决方案可能是

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

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

相关内容

  • 没有找到相关文章

最新更新