2009-11-25 82 views
0

我已经构建了一个侧栏导航,当导航标题被点击时,导航会崩溃&展开。这一切都很好。但是,如果我展开/打开其中一个导航组并点击进入一个页面,当新页面加载所有导航组时再次关闭。我很乐意为主动导航组保持打开方式。使用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

任何帮助表示赞赏!

回答

1

正如dcneiner所说,@已在最新版本的jQuery中被弃用。但看起来你的目标是一个indexListOpen,而不是全新的页面加载。因此,要么删除或更改为indexList,它应该工作

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

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

谢谢!这工作像一个魅力! – VUELA

1

如果您使用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服务器的末尾尾随斜线,网址是不区分大小写。您需要将.toLowerCase()添加到path = location ...声明的末尾,并确保您的href属性都是小写字母。

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

+0

巨大的帮助!非常感谢!我没有意识到@符号已被弃用。我也会研究你的其他技巧! – VUELA

相关问题