Jquery addClass 不是持久化的

Posted

技术标签:

【中文标题】Jquery addClass 不是持久化的【英文标题】:Jquery addClass is not persistent 【发布时间】:2011-12-29 10:16:51 【问题描述】:

我有一个使用 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)总是包含在调用的 url 中,所以我认为这个类会留下来。

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

【问题讨论】:

当您重新加载页面时,页面上的所有内容都将重新加载..因此您的类将被重置...因此您需要保存用户点击,以便您可以在页面加载时添加类跨度> 有没有办法避免这种情况? 如果你有不同的页面,你可以在你的标记中设置类'green',你的jquery代码就不需要了。 是的,如果您通过 ajax 加载将避免的内容 我这样重定向 &lt;a id="projet_menu" class="up_menu_item" href="% url projet_menu %"&gt;PROJECT MANAGER&lt;/a&gt; 在某些页面中,加载时涉及到一些 ajax,但不是全部。 【参考方案1】:

Javascript 不是用于此目的的合适工具。正如 Kim 在评论中所说,当您重新加载页面时,您的课程将不再存在。

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

编辑您可以从request.path 获取当前网址,假设您已将请求传递到您的模板(如果您启用了request context processor,这会自动发生)。

【讨论】:

我还是 Django 新手,如何查看当前 URL?【参考方案2】:

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

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

【讨论】:

不知道你想在这里做什么......此外,在 jQuery 中没有没有参数的 removeClass()...... ***.com/questions/1424981/…【参考方案3】:

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

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

【讨论】:

我有点希望我不必这样做 :p 你如何检查打开的页面? 我从来没有用过 Python 编程,所以我帮不了你哈哈! 值得一问!但我想这不是一个很难的问题。唯一的问题是我也有“子菜单”,这可能很难通过检查当前 url 来处理

以上是关于Jquery addClass 不是持久化的的主要内容,如果未能解决你的问题,请参考以下文章

在(持久切换)jQuery中访问其他页面时的持久内容

jQuery - 添加 ID 而不是类

如何使用 php/jquery 实现持久页面?

Drupal中的Jquery持久可排序对象?

持久的 jQuery 倒计时

持久化单元不是持久化的