2011-11-15 35 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