jQuery Mobileでページを変更しても、$(document).ready関数を開始する方法はありますか?$ .mobile.changePageを呼び出すと、ページが常に完全に読み込まれるとは限らないため、問題が発生するようです。
または、changePageに代わるものを見つける代わりに、changePageによってDOMにロードされたページを更新する方法はありますか?
jQuery Mobileでページを変更しても、$(document).ready関数を開始する方法はありますか?$ .mobile.changePageを呼び出すと、ページが常に完全に読み込まれるとは限らないため、問題が発生するようです。
または、changePageに代わるものを見つける代わりに、changePageによってDOMにロードされたページを更新する方法はありますか?
この答えは間違っていて役に立たなかったので、実際に人々を助けるものがあります... - ジャスパー
ドキュメント: 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" 要素の中または外に含めることをお勧めします。このようにして、ユーザーがどのようにサイトにアクセスしたか、どのように移動したかに関係なく、サイトのコードが常に存在します。
jQuery Mobile では、ナビゲートするときに各ページのコンテンツを DOM にロードするために ajax が使用され、DOM 対応ハンドラー (つまり、 を使用してバインドされたすべてのイベント$(document).ready()
) は最初のページに対してのみ実行されます。ページが表示されたときに特定のイベントを実行するには、これを特定のページに配置してみてください。
$(document)
.unbind("pageshow.somenamespace")
.bind("pageshow.somenamespace",
function() {
// code here
}
);