1

我使用此代码禁用和启用触摸:

jQuery(document).ready(function(){

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

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

});

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

代码有什么问题?

4

2 回答 2

11

问题在于您没有传递on所需的参数。您应该传递一个函数(事件处理程序)而不仅仅是一个布尔值。

解除绑定然后重新绑定的最简单方法是在某处有一个布尔值并在您的处理程序中对其进行测试。例如 :

myapp = {active: true}; // change this boolean
jQuery("body").on("touchmove", function(e) {
    if (myapp.active) { // change myapp.active
        // do things
    }
});

如果您想明确解除绑定,而不是传递falseon,请使用off. 传递false是一个未记录的技巧,可能会在未来的版本中中断。

off 文档还包含在 click 上绑定/取消绑定函数的另一种方法的示例:

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...");
});
于 2013-01-16T09:48:00.600 回答
6

使用bind()unbind()

尝试这个

 jQuery('body').bind('touchmove', function(e){e.preventDefault()});

 jQuery('button').click(function(){
     jQuery('body').unbind('touchmove');
  });
于 2013-01-16T09:50:51.300 回答