5

誰かのアドバイスに基づいて$('body').on('touchstart', function(event){ event.preventDefault() })、iOSでバウンスするネイティブアプリを無効にするために、モバイルWebアプリにこの行を追加しました。バウンスを無効にするのに最適ですが、DOMの他の場所で奇妙な動作をします。

動作しないイベントなどをクリックします。これが何をするのか、DOMの他の場所での影響を回避する方法について理解を深めたいと思っていました。

ありがとう!

編集:

私はこれらの2つの行を持っています:

  $('body').on('touchstart', function(e){ e.preventDefault() };
  $('#home').on('click', function(){ alert('home') };

preventDefault行をコメントアウトすると、その#home行は機能します。#home行に残しておくと、応答しません。#homeにネストされたdivbodyです。

この動作を引き起こしている可能性のあるアイデアはありますか?これはより大きなコードベースの一部であるため、すべての詳細を提供するのは困難ですが、どこから始めればよいのかさえわかりません。

再度、感謝します!

4

1 に答える 1

14

e.preventDefault()このオブジェクトでこのイベントのデフォルトの動作がある場合は、そのデフォルトの動作をスキップすることをブラウザに通知します。

したがって、たとえば、デフォルトの動作でフォームを送信する送信ボタンがあり、そのボタンにクリックハンドラーがありpreventDefault()、ボタンがクリックされたときにブラウザーはフォームを送信しませんでした。これの典型的な使用法は、フォームが検証されないため、ユーザーにエラーメッセージを表示し、フォームをサーバーに送信したくない場合です。

または別の例。リンクのクリックハンドラーを設定し、e.preventDefault()そのクリックハンドラーを呼び出すと、ブラウザーはリンクのクリックを処理せず、リンクのhrefをたどりません。

于 2012-08-12T09:41:22.217 に答える