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

Mor*_*eza 1 jquery touchmove

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

jQuery(document).ready(function(){

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

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

});
Run Code Online (Sandbox Code Playgroud)

功能工作正常,用于禁用触摸,但点击按钮触摸后无法启用.

什么代码错了?

Den*_*ret 11

错误的是你没有传递on所需的参数.你应该传递一个函数(事件处理程序),而不仅仅是一个布尔值.

取消绑定然后重新绑定的最简单方法是在某处使用布尔值并在处理程序中对其进行测试.例如 :

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

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

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

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...");
});
Run Code Online (Sandbox Code Playgroud)


bip*_*pen 6

使用bind()unbind()

试试这个

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

 jQuery('button').click(function(){
     jQuery('body').unbind('touchmove');
  });
Run Code Online (Sandbox Code Playgroud)

  • 这没有任何区别,因为jQuery内部使用`on()`到`bind()`事件.参考:https://github.com/jquery/jquery/blob/1.7/src/event.js#L965 (2认同)