1

アプリケーションで jQuery Mobile を使用しています。index.html ページがあり、アプリケーションに別のページを追加しようとしています。したがって、index.html ページには Camera.html ページへのリンクがあります。

<a href="Camera.html">Take a photo</a>   // A. version

リンクをクリックすると、カメラのページがスワイプされます (スワイプ アニメーションで Camera.html ページにリダイレクトされます) が、カメラ ページでイベント ハンドラーが呼び出されません (ロード、DOMContentLoaded など)。jQuery Mobile は他のページへのリダイレクトに ajax を使用しているため、イベント ハンドラーが呼び出されないと思います。

次のように変更すると、イベントは呼び出されますが、ページのリダイレクトはアニメーション化されません。

<a href="Camera.html" data-ajax="false">Take a photo</a>   // B. version

私はアニメーションを保持したいと思います。また、カメラ ページで何らかのイベントが呼び出されることを好みます (初期化に使用したいと思います)。そこで、以下の質問があります。

  1. 他のページへのリダイレクトに A. バージョンを使用した場合に呼び出されるイベントを少なくとも 1 つ知っていますか?
  2. バージョン A. を使用している場合、別のページのイベントを手動で呼び出すことはできますか?
  3. 別の方法で別のページにリダイレクトする必要がありますか?

コードサンプルをいくつか教えてください。

4

2 に答える 2

0

アニメーションを保持したいのですが、カメラページでイベントを呼び出すこともできます(初期化に使用したいので)。次の質問があります。

これを使用して、 pageinitまたはpageshowでページを初期化してみてください

jQuery('[data-role="page"]').live('pageinit', function(){
  /* page initialization */
})

pageinitは1回起動されます-ページがDOMで作成されたとき、およびpageshowはページが表示されるたびに起動されます

于 2012-04-26T11:14:40.073 に答える
0

スワイプするという意味を明確にしてください。画面に div タグをアニメーション化していますか?

ページが Camera.html にリダイレクトされている場合、Camera.html のスクリプト タグにスクリプトを含めると、Camera.html がロードされたときにのみスクリプトが実行されます。

さらに試してください:

  • div タグをアニメーション化する場合は、$('div').load() イベントを使用します
  • 追加してみる

    $('body id="camerabody"').load(function(){ alert("Body Loaded"); })
    

camerabody は、Camera.html ファイルの body タグの ID です。

  • jquery.animate を使用してアニメーションを発生させている場合は、アニメーションの完了時にコールバックを指定できます。

    $('div').animate(
             {height:'+=50'},
             1000,
             function(){ alert("animation complete"); 
    });
    
于 2012-04-26T10:56:16.670 に答える