我有一个表单元格,我希望它能够被点击。但一旦点击它,它就会有类".点击"。当任何表单元格都有这个类时,我不想被点击。有办法做到这一点吗?
您还可以使用.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)
添加到用于排除单击单元格的任何选择器中。