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

バインドを完全に解除したい場合は、 に渡すのではなく、 をfalse使用onします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...");
});
于 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 に答える