2012-01-13 5 views
0

私はどのメニューがアクティブであるかを示すために、私のメニューボタンに続くブロックを持っています。リフレッシュ後にブロックの位置を保持する方法はありますか? 現在、サブページ内のリンクを押すと位置がリセットされます。jqueryはページリロード後のアニメーションの状態を覚えています

jqueryのコード:

$("button",document.body).click(function(){ 
    var offset = $(this).offset(); 
    var offsetBody = $("body").offset(); 
    $("#block") 
    .animate({ 
    left: (offset.left - offsetBody.left) 
    }, 200); 
}); 

答えて

1

Jqueryはクライアント側のスクリプトです。ページをリロードするか、新しいページに移動すると、サーバーから情報を要求します。つまり、すべてのクライアント側のデータが失われます。

ただし、正確な問題によっては、いくつかの解決策があります。

  1. あなたが何かに等しい属性値を持つようにマークアップでいくつかの要素をコーディングすることができ、個別に各ページ上のブロックの位置にのみ関心がある場合はDOM場合、ロード時にこの値をチェックそれに従ってブロックを移動させる。

  2. クライアント側のCookieを使用して値を格納し、DOMのロード時にこの変数をチェックし、それに応じてブロックをアニメートすることができます。あなたは、PHPでサーバ側の変数を設定して、動的に1

で要素を作成するには、この変数を使用するAJAX呼び出しを使用することができ

  • あなたは、これら3つのソリューションの作業のいずれかを思いますか?私はあなたがこれを達成したいと思う方法をより正確に教えることができれば、より詳細に行くことができます。方法1

    について

    jQueryの.attr()方法を使用するよう、

    マークアップ

    <meta name="description" content="home" /> 
    

    jQueryの

    var page = $('meta[name=description]').attr("content"); 
    if (page == "home") { 
        // you know where it should be 
    } else if (page == "account") { 
        // you know where it should be 
    } 
    

    私は、これはあなたが望む正確な機能ではありません少し心配ですが、それを何ですか?方法3

    マークアップ

    <?php 
        session_start(); 
        $pos = $_SESSION['position']; 
        echo '<meta name="description" content="' . $pos . '" />' 
    ?> 
    

    はJQuery

    var position; 
    // perform animation stuff and store position in the variable 
    // make a post() request after the position has changed 
    $.post("position.php", { pos: position }); 
    

    PHP位置の

    。php

    <?php 
        session_start(); 
        $_SESSION['position'] = $_POST['pos']; 
    ?> 
    
  • +0

    解決策1は私に合っているようですが、仕事場ではしばしばブロックされるので、クッキーに依存したくありません。あなたが私にいくつかのコード例を与えることができれば、私は自分のサイトのためにそれを修正できるはずです。私は非常に感謝しています – Vindfrisk

    +0

    あなたの解決策が最後に私をそこに得るかどうかわかりません。私はそれをiframeで動作させましたが、iframeを使用するのではなく、他の問題がたくさんあります。私が探しているものを見るには、ここ[link](http://vindfrisk.se/test2/)を見てください。 – Vindfrisk

    +0

    あなたが望んでいる機能を正確に定義しようとしていますか、可能な限り単純なモデルです。あなたが目指しているものを完全に得ているかどうかはわかりません。あなたのリンクには壊れているようなページが表示されますか?私の悪いのはあなたのテストページです。 – Neilos

    0

    あなたは、次のオブジェクトに位置を保存することができます。 1.ローカルストレージ(ブラウザサポート) 現代のブラウザでは、ローカルストレージに位置を保存できます。 プロ:高速、ユーザーフレンドリー。 短所:クロスブラウザを処理する必要があります。 2.サーバー側。 それ以外の場合は、serverside() プロに保存する必要があります。ブラウザを考慮する必要はありません。 短所:遅く、インターネットの待ち時間に懸念する必要があります。 3.クッキー。

    +1

    ローカルストレージはHTML 5であり、これは初期段階ですが、潜在的な訪問者のヒープ全体を突破しています。 – Neilos

    +0

    それで、私は現代のブラウザを言ったのですが、それぞれのソリューションには長所と短所があります。あなたがコンプを許すことができれば、プロの恩恵を受けることができます。 – Gran

    +0

    私はその事実を私はちょうど客観的であると論じていません。 – Neilos

    関連する問題