我使用以下代码来禁用和启用触摸:

jQuery(document).ready(function(){

 jQuery("body").on("touchmove", false);

 jQuery('button').click(function(){
     jQuery("body").on("touchmove", true);
 });

});


该功能可以很好地禁用触摸,但是单击按钮后无法启用触摸。

代码有什么问题?

最佳答案

错误的原因只是您没有传递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是一个未记录的技巧,在将来的版本中可能会破坏。

off documentation还包含一个在单击时绑定/取消绑定函数的另一种方式的示例:

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...");
});

07-28 10:34