jQuery:使用touchmove禁用并启用触摸

时间:2013-01-16 09:44:58

标签: jquery touchmove

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

jQuery(document).ready(function(){

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

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

});

功能适用于禁用触摸,但点击按钮触摸后无法启用。

代码有什么不对吗?

2 个答案:

答案 0 :(得分:11)

错误的是你没有传递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...");
});

答案 1 :(得分:6)

使用bind()unbind()

试试这个

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

 jQuery('button').click(function(){
     jQuery('body').unbind('touchmove');
  });