Jquery addClass不是持久的

时间:2011-11-15 10:52:09

标签: javascript jquery css django addclass

我有一个我在Django开发的Web应用程序。我想用一种简单的方法来跟踪用户在网站上的位置。 所以我想我会改变点击菜单上项目的CSS。

我添加了这段简单的代码。

 <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)总是包含在被调用的网址中,所以我认为这个课程会留下来。

我不知道我是否很清楚,但我会感激任何帮助,因为这开始让我发疯!

3 个答案:

答案 0 :(得分:2)

Javascript不适用于此。正如Kim在评论中所说,当您重新加载页面时,您的课程将不再出现。

由于您正在使用Django,因此在Django模板中执行此操作的方法是 - 对于菜单中的每个URL,检查它是否与当前URL匹配,如果是,则添加该类。

修改您可以从request.path获取当前网址,假设您已将请求传递到模板中(如果您已启用request context processor,则会自动执行此操作)

答案 1 :(得分:0)

在将类读取到新元素之前从类中删除它会不会更容易吗?

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

答案 2 :(得分:0)

当您转到另一个页面时,所有使用Javascript(或jQuery自然)应用的更改都将消失。页面像往常一样加载。所做的所有更改仅应用于当前显示页面。它不会修改之后的页面。

您可以检查加载页面时打开的页面,并更改相应按钮的颜色。最好的方法是使用服务器端编程语言(在你的情况下是带有Django框架的Python)添加类,如果页面与右键匹配。