間違っているのは、単に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...");
});