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 加载将避免的内容 我这样重定向<a id="projet_menu" class="up_menu_item" href="% url projet_menu %">PROJECT MANAGER</a>
在某些页面中,加载时涉及到一些 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 不是持久化的的主要内容,如果未能解决你的问题,请参考以下文章