0

jQuery モバイル + Phonegap アプリケーションのすべてのインタラクティブなボタン要素に vmouseup イベント ハンドラーを使用しています。

たとえば、次のコードを確認してください。

$('#sBtn').live('vmouseup', function (event) {
  event.preventDefault();
  event.stopImmediatePropagation();
  alert("Inside Function");
})

ここで何が起こるかというと、 Android ベースのタッチ スクリーン モバイルでイベントが 2 回発生しました(2 つの「Inside Function」アラートを受け取りました) 。これを防ぐ方法は?またはこれを回避するための最良のアプローチは何ですか?

注: event.preventDefault() と event.stopImmediateProbagtion() を試しましたが、同じ問題に直面しました。誰でも背後で何が起こっているのか、それをクリックした後にボタンを無効にする方法を簡単に教えてください。

$('#sBtn').off('vmouseup').on( 'vmouseup', function (event) {})も試しましたが、うまくいきませんでした。これを防ぐために私が何をすべきかを誰かが提案/アドバイスできますか...?

4

1 に答える 1

0

ねえ、問題はあなたが使用していることだと思いますlive()

jquery stopImmediatePropagation から。

その他の注意事項:

.live () メソッドは、ドキュメントの先頭に伝播したイベントを処理するため、ライブ イベントの伝播を停止することはできません。同様に、.delegate() によって処理されるイベントは、委任先の要素に伝達されます。DOM ツリー内のその下の要素にバインドされたイベント ハンドラーは、委任されたイベント ハンドラーが呼び出されるまでに既に実行されています。したがって、これらのハンドラーは、event.stopPropagation() を呼び出すか、false を返すことによって、委任されたハンドラーがトリガーされるのを防ぐことができます。

bind別のもの (または) に変更してみてくださいon。このままでは伝播を止めることはできないようです。

于 2013-05-24T09:58:01.967 に答える