您的签名.on()
and .off()
必须匹配。
这两个不匹配,所以.off()
调用将找不到要删除的匹配事件处理程序:
$(document).on('click', '.btn', function() {
update();
});
$(document).off('click', '.blue');
注意,选择器传递给.on()
and .off()
是不同的。
当使用动态形式时.on()
(将选择器作为参数传递给 .on()),您不能仅删除部分项目。这是因为根元素上只安装了一个事件处理程序,而 jQuery 只能删除整个事件或根本不删除。所以,你不能只是.off()
一些动态项目。
您的选择是删除所有事件处理程序:
$(document).off('click', '.btn');
然后安装一个新的事件处理程序,排除您不想要的项目,例如:
$(document).off('click', '.btn:not(.blue)');
或者,教事件处理程序本身如何忽略.blue
items:
$(document).on('click', '.btn', function() {
if (!$(this).hasClass('blue')) {
update();
}
});