2

jQuery Mobileでページを変更しても、$(document).ready関数を開始する方法はありますか?$ .mobile.changePageを呼び出すと、ページが常に完全に読み込まれるとは限らないため、問題が発生するようです。

または、changePageに代わるものを見つける代わりに、changePageによってDOMにロードされたページを更新する方法はありますか?

4

2 に答える 2

2

この答えは間違っていて役に立たなかったので、実際に人々を助けるものがあります... - ジャスパー

ドキュメント: http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

具体的には、reloadPage オプションを探しています。

reloadPage ( boolean , デフォルト: false) ページコンテナの DOM に既にある場合でも、ページのリロードを強制します。changePage() の「to」引数が URL の場合にのみ使用されます。

したがって、次のようなものが機能します。

$.mobile.changePage('/some/url.html', {
    reloadPage : true
});

特定の疑似ページ専用のコードを実行するために、特定の疑似ページの pageinit イベントにバインドすることもできます。

$(document).delegate('#page-1', 'pageinit', function () {
    //run code for #page-1 pseudo-page
}).delegate('#page-2', 'pageinit', function () {
    //run code for #page-2 pseudo-page
}).delegate('#page-3', 'pageinit', function () {
    //run code for #page-3 pseudo-page
});

次に、サイト全体のすべてのコードを単一の .js インクルードに入れ、それを各ドキュメントの data-role="page" または data-role="dialog" 要素の中または外に含めることをお勧めします。このようにして、ユーザーがどのようにサイトにアクセスしたか、どのように移動したかに関係なく、サイトのコードが常に存在します。

于 2012-07-31T19:22:59.643 に答える
1

jQuery Mobile では、ナビゲートするときに各ページのコンテンツを DOM にロードするために ajax が使用され、DOM 対応ハンドラー (つまり、 を使用してバインドされたすべてのイベント$(document).ready()) は最初のページに対してのみ実行されます。ページが表示されたときに特定のイベントを実行するには、これを特定のページに配置してみてください。

$(document)
  .unbind("pageshow.somenamespace")
  .bind("pageshow.somenamespace", 
    function() {
      // code here
    }
  );
于 2012-07-28T22:02:13.890 に答える