2011-11-15 10 views
6

jqmフレームワークを使用してwebappを構築していますが、jQueryウィジェットk3dcarouselを含めるときにpageshow関数を使用しようとしています。問題のページで、私はdata-role="page"のdiv、Jquery Mobile pageshow関数

$("#page-about").live(
    "pageshow", 
    function (event) { 
     $('#k3dCarousel_portrait').k3dCarousel(); 
    } 
); 

の下に私のスクリプトを持っている私が私が私がこれを使用しています考えさせることになる、ロードするためにJSの機能を得るために、二回私のリンクをクリックする必要があると思われます機能が間違っている。また、 $("#page-about").die(); 関数をpageshow関数の下に使用しないと、戻るをクリックしてリンクを再度クリックすると、スクリプトが複数回読み込まれます。

私はpageshowロジックを間違って使用していますか?私がしようとしていることを達成するためのよりよい方法がありますか?AJAXのこのページを自分のモバイルフレームワークに組み込みます。

これはかなり具体的な質問ですが、うまくいけばこれには一般的な回答があります。これはどのウィジェットにも起こりそうです。

何か助けていただければと思います。

ありがとうございます。

答えて

7

イベントはpageshowにバインドされているため、ページを表示するたびに無名関数が発生します。あなただけのページの最初のビュー上のコードを呼び出したい場合は、pagecreate/pageinitイベントに結合するか、またはあなたのpageshowコード内k3dCarouselが存在するかどうかを確認、次のいずれかここで

$("#page-about").live(
    "pageshow", 
    function (event) { 
     //check for the existence of HTML within the container element 
     if ($('#k3dCarousel_portrait').html().length == 0) { 
      $('#k3dCarousel_portrait').k3dCarousel(); 
     } 
    } 
); 

は、すべてのjQueryの説明ですモバイル固有のイベント:http://jquerymobile.com/demos/1.0rc3/docs/api/events.html

+0

ご回答いただきありがとうございます。お客様のコードは私の移動に役立っています。私がpagecreate/initよりむしろpageshowを使用していた理由は、これらの関数を使ってjsを起動することができなかったように見えるからです。私はrc2にいるので、おそらく私は更新する必要があります... –

関連する問題