Jquery addClass 不是持久的

发布于 2024-12-15 14:38:31 字数 674 浏览 3 评论 0 原文

我正在 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>

当我单击菜单项时,颜色发生变化,但随后又恢复为默认值。我点击的项目实际上是将用户重定向到另一个网址的标签。但菜单(和 JavaScript)总是包含在调用的 URL 中,所以我认为该类会保留。

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

I have a web application that I'm developing in Django. I wnat to have a simple way to track where the user is on the site.
So I thought I would change the css of the item clicked on the menu.

I added this simple piece of code.

 <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>

When I click on the menu item, the color changes, but it turns back to default right after. The item I click on are actually tags which redirect the user to another url. But the menu (and the javascript) is always included in the urls called, so I thought the class would stay.

I don't know if I'm very clear, but I would appreciate any help as this is starting to drive me crazy!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

闻呓 2024-12-22 14:38:31

Javascript 不是合适的工具。正如 Kim 在评论中所说,当您重新加载页面时,您的班级将不再存在。

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

编辑 假设您已将请求传递到模板中,您可以从 request.path 获取当前 URL(如果您启用了 请求上下文处理器)。

Javascript isn't the appropriate tool for this. As Kim says in the comment, when you reload the page, your class won't be present any more.

Since you're using Django, the way to do this is in the Django template - for each url in your menu, check if it matches the current URL, and add the class if so.

Edit You can get the current URL from request.path, assuming you've passed the request into your template (this happens automatically if you've enabled the request context processor).

ぃ弥猫深巷。 2024-12-22 14:38:31

在将类读取到新元素之前从所有元素中删除该类不是更容易吗?

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

Would it not be easier to remove the class from all elements before readding it to the new element?

$(".up_menu_item").click(function(){
    $($(this).attr('class')).removeClass();
    $(this).addClass("green");
});
挖鼻大婶 2024-12-22 14:38:31

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

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

When you go to another page, all changes applied with Javascript (or jQuery naturally) are gone. The page is loaded like it normally would. All changes made are applied on the current displaying page only. It does not modify pages that come after.

You could check what page is opened when the page is loaded, and change the colour of the corresponding button. The best way to go is use your server-side programming language (which in your case is Python with the Django framework) to add the class, if the page matches the right button.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文