我有一堆有班级的
如何删除可单击的类以使其不再可单击?这是我所拥有的,但它没有删除类:

    $('td.clickable').click(function(){
        $(this).removeClass('clickable');
});

最佳答案

您拥有的代码肯定会删除该类,但它不会删除click事件。
我建议修改您的单击事件以使用事件委派,如下所示:

$('table').on("click", ".clickable", function(){
    $(this).removeClass('clickable');
});

示例:https://jsfiddle.net/c6eda0kj/
为什么活动授权很重要:
执行类似于$('.clickable').click( ... )的操作会为clickable的每个实例创建一个侦听器。如果有100个td,那就是您刚刚创建的100个侦听器。无论您是否从这100个元素中移除类,事件都已附加。要删除事件,必须使用.clickableunbind
如果你像我上面所说的那样把监听器放在off上,那么你只有一个事件。当该事件触发时(单击table),它将检查单击的元素是否与指定的选择器匹配。通过移除类,它将不再触发事件-不需要解除任何类型的绑定。

10-06 08:00