この jQuery Mobile (バージョン 1.1.0) の質問をご覧いただきありがとうございます。
私の最初の質問は次のとおりです。すべてのページ読み込みとすべての ajax ページ呼び出しで実行するためにどの関数を使用しますか (それらは 2 つの別個の獣のようです)。毎回実行してもらいたいです。
$(document).bind('pageinit',function(){
console.log('Does this work for you?');
});
さまざまな機能のために jQuery コードを使用して、いくつかの分離された jQuery-Mobile を利用した HTML ページがあります。この機能の一部には、いくつかのページで発生するタッチベースのスライダー (royalSlider) が含まれています。一部のコードは、特定の要素 (固定のサブヘッダーやフッターなど) が存在するかどうかを調べて、ページの余白を調整し、メイン コンテンツが遮られるようにします。その他の js は、すべての画像に対して AJAX 呼び出しをトリガーする特定のクラスですべての要素をヒットするスクリプトです。
質問: すべてのページの ID ごとに呼び出されるライブ pageinit 関数が必要ですか? すべてのページで pageinit AND pagecreate を使用する必要がありますか?
たとえば、フッターがあるかどうかを検出する face() という関数があるとします。これにより、クラスを .container に追加して下部マージンを追加し、メイン コンテンツが見えないようにすることができます。
理論的には、ページに着陸したり、AJAX を介してページをプルしたりすると、すべてのアクティブなページにヒットするこのような関数を実行できませんか?
$('[data-role="page"].ui-page-active').live('pageinit', function(){
face();
});
いいえ:
$("#brand-grid,#product-grid,#main-grid,#trends").live('pageinit', function() {
face();
});
私が見つけたのは、最初にオフセットが必要なページに着陸したときに機能することですが、別のページに移動すると機能しなくなります。これは、DOM に 2 つの div[data-role="page"] があり、コマンドがあいまいすぎるためですか? それとも、pageinit が元のページでのみ機能し、AJAX のコンテンツでは機能しないためですか?
次の質問: ページから移動した後、ページを破棄するにはどうすればよいですか? できれば、タブレットで RoyalSlider の 2 つのインスタンスを実行したくありません。
これが私の試みです:
$('[data-role="page"].ui-page-active').live('pageinit', function(){
$('[data-role="page"]:not(.ui-page-active)').live('pageremove');
});
メモリリークとパフォーマンスの低下を避けたいだけです。JQM は、これらの気まぐれな問題を除けば、開発するのに非常に優れています。ありがとうございました。