これは質問に対する解決策であるため、それほど問題ではありません。
わずかに異なる問題に対応していた Hallodom によって追加された回答 (スクロールを一時的に無効にする方法は? ) に出くわすまで、解決策を見つけるのは困難でした。
問題に対する回答を明示的に文書化したかったのです。他の解決策は大歓迎であり、会話に追加されます。
ハローダムの解決策は次のとおりです。
モバイル デバイスの場合、touchmove
イベントを処理する必要があります。
$('body').bind('touchmove', function(e){e.preventDefault()})
バインドを解除して、スクロールを再度有効にします。iOS6 および Android 2.3.3 でテスト済み
$('body').unbind('touchmove')
DOM 内のオブジェクトがクリックされたときに呼び出される関数に単にそれらをアタッチするだけで、hallodom のソリューションを使用しました。
$('body').on('click', 'button', function(e){
if($(this).prop('checked')){
disable_scroll();
}else{
enable_scroll();
}
});
function disable_scroll() {
$('body').bind('touchmove', function(e){e.preventDefault()});
}
function enable_scroll() {
$('body').unbind('touchmove');
}