2012-04-20 13 views
1

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

pagebeforeshowイベントで検出される方法はありますか?

答えて

1

jQueryモバイルは、メタデータをほとんどのイベントのコールバック関数に渡します。実際の遷移アニメーションがキックオフされる前に、我々は、に移行されている「toPage」でトリガ

pagebeforehowdocsから。このイベントのコールバックはデータオブジェクトを2番目のargとして受け取ります。このデータオブジェクトには、次のプロパティがあります。

  • 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 
}); 
+0

私が間違っている場合は私を修正してください。しかし、 "選択"要素の場合、prevPageオブジェクトは空です。 – user70192

+0

@ user70192私はそれを確認していませんが、ブランチするのにまだ十分な情報ですか?ただ空をテストして、あなたは選択されたオーバーレイから来たことを知っています.. – paislee

0

私はまた、上記のコメントで提起された問題を検証しませんでしたが、data.prevPageはdata.prevPage[0].innerHTMLを介してアクセス全体の前のページのHTMLのコピーを持っています。選択ダイアログのclickイベントにバインドするなどの操作を行い、ユーザーが任意の項目を選択したDOMにクラスを追加するように指示し、HTMLから取り除くことができると確信しています。そこにアイデアを投げつけるだけです。

関連する問題