2012-01-13 41 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時檢查此變量並相應地爲該塊設置動畫。

  3. 你可以使用AJAX調用設置服務器端變量在PHP和使用該變量在1

動態創建的元素是否有任何這三種解決方案的工作,你覺得呢?如果你能更準確地告訴我你想如何實現這一目標,我可以進一步細化。

對於方法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似乎適合我,我不想依賴cookie,因爲它經常在工作場所被阻塞。如果你可以給我一些代碼示例,那麼我應該可以修改它爲我的網站。即時通訊非常感謝 – Vindfrisk 2012-01-13 02:35:41

+0

林不知道你的解決方案是否會讓我到最後。我使用iframe工作,但我寧願不使用iframe,因爲它會給我很多其他問題。看看這裏[鏈接](http://vindfrisk.se/test2/)看看我在找什麼。 – Vindfrisk 2012-01-13 03:39:24

+0

可否請你試着準確定義你所需要的功能,最簡單的模型可能我不確定我完全得到你的目標。你的鏈接顯示一個似乎破碎的頁面?!我的糟糕的是它是我的測試頁。 – Neilos 2012-01-13 03:51:04

0

可以存儲在下列對象的位置。 1.本地存儲(瀏覽器支持) 在現代瀏覽器中,您可以將位置存儲在Localstorage中。 優點:快速,用戶友好。缺點:你需要處理跨瀏覽器。 2.服務器端。 否則,您需要將它存儲在serverside() 優點:不需要考慮瀏覽器。缺點:你需要關注網絡延遲。 3.餅乾。

+1

本地存儲是HTML 5,雖然這是在它的嬰兒期,你正在擺脫一大堆潛在的訪客。 – Neilos 2012-01-13 02:43:19

+0

對,這就是爲什麼我說現代瀏覽器,每種解決方案都有其優點和缺點,對嗎?如果你能容忍這些缺點,那麼你可以從專業人士中受益。 – Gran 2012-01-13 03:03:52

+0

我不是在爭辯這個事實,我只是客觀=) – Neilos 2012-01-13 03:16:40