问题在于您没有传递on 要求的参数。您应该传递一个函数(事件处理程序),而不仅仅是一个布尔值。
解除绑定然后重新绑定的最简单方法是在某处设置一个布尔值并在您的处理程序中对其进行测试。例如:
myapp = {active: true}; // change this boolean
jQuery("body").on("touchmove", function(e) {
if (myapp.active) { // change myapp.active
// do things
}
});
如果您想明确解除绑定,而不是将false 传递给on,请使用off。传递false 是一个未记录的技巧,可能会在未来的版本中中断。
offdocumentation 还包含另一个在单击时绑定/取消绑定函数的示例:
function aClick() {
$("div").show().fadeOut("slow");
}
$("#bind").click(function () {
$("body").on("click", "#theone", aClick)
.find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
$("body").off("click", "#theone", aClick)
.find("#theone").text("Does nothing...");
});