【发布时间】:2010-12-27 20:53:39
【问题描述】:
我不知道这是否可行,但现在我有一个左侧导航栏,里面有一堆链接。我通过检查它指向的 url 和当前页面 url,向用户单击的任何链接项添加一个活动类(处于状态)。这很好用。
$("#sidebar-nav ul li a").each(function() {
if(this.href == window.location || this.href == document.location.protocol + "//" + window.location.hostname + window.location.pathname)
$(this).addClass("active");
});
但是,当人们在他们登陆的初始页面的其他页面中单击时,我需要继续“保持”该元素上的活动状态/类。因为每个侧边栏链接都代表一个“类别”,所以我想保留该侧边栏链接不仅在网址匹配的第一页上有效,而且在整个页面上都有效。
现在,一旦用户在他们登陆的第一页内点击离开,活动状态就会丢失,因为网址不再匹配。如果他们单击另一个 sidbar 导航,我只希望删除活动状态。希望这是有道理的,但是有没有办法“保持”最初设置活动状态的整个过程......除非人们点击侧边栏导航的另一个元素?
HTML:
<div id="sidebar-nav">
<ul>
<li><a href="link1">Link One</a></li>
<li><a href="link2">Link Two</a></li>
<li><a href="link3">Link Three</a></li>
<li><a href="link4">Link Four</a></li>
</ul>
</div>
【问题讨论】:
-
已发布。问题是我真的没有像 /category1/link1 category1/link2 这样的任何结构......所以下面的建议不起作用。
-
你能发布一些你的结构的例子吗?本质上,如果您想要一个灵活的解决方案,则 url 中的某些内容需要确定您所在的类别。否则,您可以查找特定链接并将其映射到 javascript 中作为硬编码数组的类别,但这样做会造成可维护性噩梦
标签: jquery