0

最近 jQuery Mobile を使用して開発を始めたので、イベント検出の動作に少し戸惑っています。標準のjQueryでは、いつでも使用できます

$("#someId").on("click",doSomething());

そしてこれはうまくいくでしょう。ただし、jQuery モバイルを使用して、次の方法でイベント ハンドラーをドキュメント全体にバインドする必要があることがわかりました。

$(document).on("click","#someId",doSomething());

なぜこれが事実なのか、誰にも分かりますか?jQuery モバイルは、jQuery とは異なる方法でイベントを処理しますか?

4

2 に答える 2

0

標準の jQuery バインディングは、呼び出すと機能します。つまり、ページにコードをロードすると、識別子を$("#someId").on("click",doSomething());持つ要素が検索され、コールバックがバインドされます。ただし、jQuery Mobile では、ページを読み込んだときに一部の要素が表示されません。代わりに、要素は AJAX でダウンロードされるため、ページの読み込み時に行ったバインディングはそれらの要素をキャッチしませんでした。そのため、jQuery Mobile では通常、デリゲート イベント バインディング (古いバージョンの jQueryではライブバインディングと呼ばれていました) を使用します。これは、後で DOM に追加される要素に対しても機能します。参照someIddoSomething()

于 2013-03-01T12:51:13.167 に答える
0

jQuery モバイルは ajax でナビゲーションを行うことが多いため、要素が常に DOM に存在するとは限りません。

これが、人々がデリゲート イベントバインディングを使用する理由です。

于 2013-03-01T12:46:36.233 に答える