2013-02-18 51 views
0

我有一個導航2按鈕,當點擊一個按鈕時,它會加載一個新頁面(新頁面加載),點擊按鈕時,應該添加一個類名選擇的類... 它部分地實現了 - 它添加了類,但是當它加載新頁面時,該類又被刪除了?如何讓課堂堅持用戶點擊的內容?添加的類不被記住

$(document).on("click", ".list-mode button", function() { 
    $(".list-mode button").removeClass("selected"); 
    $(this).addClass("selected"); 
}); 
+3

你不能。 JavaScript不會持久狀態。你將需要某種形式的存儲,在HTTP請求(cookie,數據庫,本地存儲...)中選擇了哪個值 – 2013-02-18 09:16:59

+0

你必須記住服務器上的類,並在顯示下一頁時將它重新寫回 – 2013-02-18 09:17:38

+0

好吧, thx的答案 - 我解決了它通過使用LocalStorage來保存用戶點擊 – nuffsaid 2013-02-18 09:26:54

回答

2

如果您正在導航到新頁面,則使用JavaScript進行的更改將不會顯示在新頁面中。您確實有三種選擇:

  1. 使用服務器端代碼將正確的類添加到新頁面的HTML中的正確元素。
  2. 在新頁面中使用JavaScript將正確的類添加到正確的元素;您需要一種方法來確定該類應該添加到哪個元素(可能是新頁面的URL的一部分)。
  3. 使用AJAX導航,而不是加載一個全新的頁面,只需加載新內容並替換已加載頁面的一部分。
+0

還有cookie選項。 – 2013-02-18 09:19:20

+0

@ T.J.Crowder當然,cookies可能是選項1或選項2實現的一部分。我不認爲有一個單獨的選項屬於他們自己的選項;你仍然必須*使用* cookie。 – 2013-02-18 09:22:36

+0

選項2在這裏將是我的首選。這個答案可能會有所幫助:http://stackoverflow.com/questions/5448545/how-to-retrieve-get-parameters-from-javascript – daveyfaherty 2013-02-18 10:25:25

0

您需要cookies或DOM存儲。

每當頁面將被放棄時,您需要在某處存儲用戶上次執行的操作,並使用存儲的設置初始化整個按鈕。

當你使用jQuery,處理document.ready事件和初始化有按鈕,只要在頁面加載:

$(document).ready(function() { 
    // Initialize the whole buttons 
}); 
+0

*「你需要cookies或DOM存儲。」*不一定,作爲安東尼指出,你可以將信息發送到服務器並堅持到那裏。 – 2013-02-18 09:24:57

+0

@ T.J.Crowder我更喜歡將它存儲在瀏覽器中,而不是存儲在某個_server會話state_中。我們不知道實際的基本要求。我的意思是:也許這個「跟蹤」可以在用戶離開網站時死掉,那麼爲什麼要使用服務器內存來做這種事情呢? – 2013-02-18 09:27:46

+0

@Matías:對。但「需要」是一個非常強的詞,它排除了其他可能性。 – 2013-02-18 09:31:35