1

ページのあるjqueryモバイルアプリがあります。このページには3つのDIVがあり、さまざまな変数に基づいてこれらのDIVの1つをプログラムで選択します。とにかく、1つのDIVにはselect要素が含まれています。この要素には20個のアイテムが含まれています。せん断量のため、選択ボックスが独自のダイアログで開きます。それで問題ありませんが、ユーザーが選択した後、ホスティングページのpagebeforeshowイベントが再度発生します。私の問題は、ユーザーがオプションを選択したか、選択ダイアログを閉じた結果としてこのイベントが発生したことを検出する方法がわからないようです。

pagebeforeshowイベントでどのようにしてここに到達したかを検出する方法はありますか?

4

2 に答える 2

1

jQuery モバイルは、ほとんどのイベントのコールバック関数にメタデータを渡します。ドキュメントからpagebeforehow:_

実際の遷移アニメーションが開始される前に、遷移先の「toPage」でトリガーされます。このイベントのコールバックは、2 番目の引数としてデータ オブジェクトを受け取ります。このデータ オブジェクトには、次のプロパティがあります。

  • prevPage (オブジェクト) - 移行元のページ DOM 要素を含む jQuery コレクション オブジェクト。アプリケーションの起動時に最初のページが遷移するとき、このコレクションは空であることに注意してください。

コールバック関数でこれを使用して有利に分岐できるようにする必要があります。つまりprevPage、現在のページかどうかを検出します。これは次のようになります。

$('#yourPage').live('pagebeforeshow', function(event, data) {
    var from = data.prevPage;
    // do some inspection of `from` and branch accordingly
    // might require some experimental console.logging first
});
于 2012-04-20T17:52:42.990 に答える
0

上記のコメントで提起された質問も確認しませんでしたが、 data.prevPage には、 を介してアクセスされる前のページの HTML 全体のコピーがありますdata.prevPage[0].innerHTML。選択ダイアログのクリックイベントにバインドするようなことをして、ユーザーがエントリを選択したDOMにクラスなどを追加し、それをHTMLからスクレイピングするように指示できると思いますか? そこにアイデアを投げかけるだけです。

于 2012-04-27T21:42:06.097 に答える