我有一堆有班级的
如何删除可单击的类以使其不再可单击?这是我所拥有的,但它没有删除类:
$('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个元素中移除类,事件都已附加。要删除事件,必须使用.clickable
或unbind
。如果你像我上面所说的那样把监听器放在
off
上,那么你只有一个事件。当该事件触发时(单击table
),它将检查单击的元素是否与指定的选择器匹配。通过移除类,它将不再触发事件-不需要解除任何类型的绑定。