2011-11-15 65 views
3

我有一個我在Django開發的Web應用程序。我想有一個簡單的方法來跟蹤用戶在網站上的位置。 所以我想我會改變菜單上點擊的項目的CSS。Jquery addClass不是持久的

我加了這段簡單的代碼。

<script type="text/javascript"> 
     $(document).ready(function(){ 

     $(".up_menu_item").click(function(){ 
       $(this).addClass("green"); 
       var excludeThis = $(this); 
       $(".up_menu_item").not(excludeThis).each(function(){ 
         $(this).removeClass("green"); 
       }); 
     }); 

     }); 
     </script> 

當我點擊菜單項,顏色的變化,但它變回之後違約。我點擊的項目實際上是將用戶重定向到另一個URL的標籤。但菜單(和JavaScript)總是包含在所調用的URL中,所以我認爲這個類將保留。

我不知道我是不是很清楚,但是因爲這是開始開車送我瘋狂,我希望得到任何幫助!

+0

當你重新加載你的頁面時,頁面上的所有內容都將被重新加載..所以你的類將被重置...所以你需要保存用戶的點擊,所以你可以添加頁面加載類 – Kimtho6

+0

有沒有辦法避免那? – Johanna

+0

如果你有不同的頁面,你可以在你的標記中設置「綠色」類,並且你的jquery代碼是不必要的。 –

回答

0

這豈不是越容易readding新元素之前刪除所有元素的類?

$(".up_menu_item").click(function(){ 
    $($(this).attr('class')).removeClass(); 
    $(this).addClass("green"); 
}); 
+0

還是不知道你想在這裏做什麼......再說,沒有removeClass(),沒有參數的jQuery ... –

+0

http://stackoverflow.com/questions/1424981/how-to-remove- all-css-classess-using-jquery –

+0

相關知識:-) –

0

當您轉到另一頁面時,所有使用Javascript(或jQuery自然)應用的更改都消失了。頁面像通常那樣加載。所做的所有更改僅適用於當前顯示頁面。它不會修改後面的頁面。

你可以檢查時,頁面加載打開什麼網頁,並改變相應的按鈕的顏色。最好的方法是使用你的服務器端編程語言(在你的情況下是Python和Django框架)添加類,如果頁面匹配正確的按鈕。

+0

我有點希望我不必這樣做:p如何檢查打開的頁面? – Johanna

+0

我從來沒有用Python編程過,所以我不能幫你處理這個哈哈! –

+0

這是值得問的!但我想這不是一個很難的問題。唯一的是我也有「子菜單」,這可能很難通過檢查當前的URL來處理。 – Johanna

2

JavaScript不適合用於此目的。正如Kim在評論中所說,當你重新加載頁面時,你的班級將不再存在。

由於您使用的Django,要做到這一點的方法是在Django模板 - 在你的菜單中的每個網址,檢查它是否在當前URL匹配,如果是添加類。

編輯您可以從request.path得到當前的URL,假設你已經通過請求到模板(如果您已啓用request context processor自動發生)。

+0

我還是Django的新手,你如何檢查當前的URL? – Johanna