0

<body>iOS では、要素内の要素ではなく、要素のみのスクロールを無効にしたいと考えてい<body>ます。次のコードは、要素のドラッグを無効にしますが<body>、子 div のドラッグも防ぎます。

$("body").bind("touchstart", function(e) {
    e.preventDefault();
});

親内の子divではなく、親divに影響を与えるだけの方法はありますか( <body>)? うまくいくかもしれないと思っ$("#yourdiv").parent()たが、うまくいかなかった。

編集:このリンクは、同じ問題に対処していますが、私の問題を解決しませんでした:アプリのドラッグを防止しますが、ios の内部 div 要素のスクロールを許可します

4

3 に答える 3

4
$("body").bind("touchstart", function(e) {
    if(e.target.nodeName === "BODY"){
       e.preventDefault();
    }
});

イベントの内容を確認することもできtargetます。これがiOSでどのように行われるかは100%わかりませんが、問題はないと思います。

もう1つの可能性は、そもそもイベントの伝播を停止することです。

$("*:not(body)").bind('touchstart', function(e){
  e.stopPropagation();
});

しかし、これは単なる考えであり、それが機能するかどうかも完全にはわかりません。

于 2012-10-06T03:38:33.360 に答える
3

thisと比較することもできますe.target

$("body").bind("touchstart", function(e) {
    if (this === e.target) {
        e.preventDefault();
    }
});
于 2012-10-06T03:41:58.253 に答える
0

iOSでの違いはわかりませんが(まだテストしていません)、Androidで問題を解決した方法を次に示します。

JSBINデモ

解決策には、いくつかのことが含まれます。

  1. デフォルトの Bodytouchmoveイベントを無効にする
  2. 取り組みtouchmoveたいターゲットのボディにイベントがバブリングしないようにするtouchmove
  3. 許可されたターゲットのオーバースクロールを強制的にボディにバブルさせて無効にする
于 2014-06-05T09:36:11.943 に答える