使用JQuery在加载新页面时保持活动的子导航打开

我已经构建了一个侧边栏导航,在单击导航标题时会折叠和展开。 一切都很好。 但是,如果我展开/打开其中一个导航组并单击以转到页面,则当新页面加载所有导航组时,将再次关闭。 我很想找到一个让主动导航组保持开放的方法。

这是我用于崩溃/扩展的内容:(它目前设置为只有一个导航组一次打开)

/* Collapse and Expand */ $(".slideTitle").click(function() { $(".indexListOpen").removeClass("indexListOpen").addClass("indexList"); $(this).next().toggleClass("indexList").toggleClass("indexListOpen"); }); 

这就是我试图用来在新页面加载时保持当前导航组打开的内容:

 /* keep current nav group open */ var path = location.pathname; $('.indexListOpen a[@href$="' + path + '"]').addClass("selected"); $(".selected").parent().parent().removeClass("indexList").addClass("indexListOpen"); 

不工作……所以我确定我做错了。 我正在处理的页面位于instarservices.com/commercial

任何帮助表示赞赏!

正如dcneiner所说@在最新版本的jQuery中已被弃用。 但看起来您的目标是在新页面加载时不存在的indexListOpen 。 所以要么删除它或将其更改为indexList ,它应该工作

 $('a[href$="' + path + '"]').addClass("selected"); 

要么

 $('.indexList a[href$="' + path + '"]').addClass("selected"); 

如果您使用的是jQuery 1.3或更新版本(点版本),则无法使用@符号调用属性选择器。 另外,起始斜线的存在可能引起问题。 所以我建议这样做:

 var path = location.pathname.replace(/(^\/)/g,''); // Removes the opening slash if present $('.indexListOpen a[href$=' + path + ']').addClass("selected"); 

如果您遇到浏览器差异(在某些工作,而在另一个工作),请检查三件事:

  1. 在jQuery选择器中使用它之前,您可能需要转义/字符
  2. 您可能会在pathname中得到一个尾随斜杠,该选择符末尾没有
  3. 在大多数Windows服务器上,url不区分大小写。 您需要将.toLowerCase()添加到path = location ...语句的末尾,并确保您的href属性都是小写。

祝您好运,如果这些建议不起作用,请尝试发布您的导航HTML,以帮助我们进一步排除故障。