1

jQuery Mobile を使用して、制御しているページの外側にある 1 つのナビゲーションを使用してアプリを作成しています (つまり、ナビゲーションは各ページ内で複製されず、コンテナーの外側に 1 つのインスタンスのみが複製されます)。ページは、ページ ID にリンクする data-role = "button" リンクを含む「通常の」 data-role = "page1" で配信されます。

一連の if ステートメントとして設定された外部 JS ファイル内にあるページごとにページ固有の JS があります。ターゲット ID が page1 の場合はコードを実行し、ターゲット ID が page2 の場合はそのコードを実行します。

すべてのページが 1 回だけ読み込まれる場合は完全に機能しますが、ページをリロードすると (ナビゲーションからページに戻る)、コードは最初から再起動しません。JS が最初にそのページで実行を終了したときと同じ状態のままです (JS は各ページでアニメーションを制御しています)。

JS 全体をページにバインドしていますが、各ページの JS をそのページにバインドする必要がありますか? 私はこれを調査するために無駄に試みられました-私はjQ Mを始めたばかりです.

ここに私のJSがあります:

$(document).bind('pagecreate', function (e) {
if (e.target.id == 'one') {

    $('#div-one').animate({marginLeft:"500px"});

}

if (e.target.id == 'two') {

    //Perform jQuery .animate function  

}

if (e.target.id == 'three') {

//Perform jQuery .animate function

}

    //etc   

});

どんな助けやアドバイスもいただければ幸いです!!

4

1 に答える 1

3

あなたの例pagecreateでは、ページが初めて作成されたときにイベントが1回だけトリガーされます。

したがってpagebeforeshow、次のようにイベントに変更します。

$(document).bind('pagebeforeshow', function (e) {

どのページ イベントを使用すればよいかわからない場合は、常に を使用してくださいpagebeforeshow

ページ イベントとその仕組みの詳細については、このARTICLEを参照するか、こちらを参照してください。

もう 1 つ、これはエラーではありませんが非推奨です。イベント バインディング用bind(..に切り替えます。on(...

$(document).on('pagebeforeshow', '[data-role="page"]', function (e) {

または、特定のページをターゲットにする場合:

$(document).on('pagebeforeshow', '#page-id', function (e) {
于 2013-03-14T11:23:59.310 に答える