【问题标题】:jquery - Add active class to navigation link build with jquery ui accordionjquery - 使用 jquery ui 手风琴向导航链接构建添加活动类
【发布时间】:2012-05-12 20:22:11
【问题描述】:

更新:

尝试使用正则表达式作为 url 并且它有效:

var url = window.location.pathname, 
urlRegExp = new RegExp(url.replace(/\/$/,'') + "$");

$("#accordion a").each(function()
{
    if(urlRegExp.test(this.href.replace(/\/$/,'')))
    {
        $(this).addClass("active-sidebar-link");
    }
});

我正在使用 jQuery UI Accordion Widget 为我的网站构建侧边栏导航菜单。 http://jqueryui.com/demos/accordion/

我有以下代码:

// create accordion
$( "#accordion" ).accordion(
{
    header: '> li, h3:not(> li > ul)',
    collapsible: true,
    autoHeight: false,
    navigation:true 
});

// Add active class to active sidebar links
$("#accordion a").each(function() 
{
    if (this.href == window.location || this.href == document.location.protocol + "//" + window.location.hostname + window.location.pathname)
    {
        $(this).addClass("active-sidebar-link");
    }
});

手风琴有效,“navigation: true”选项也有效(http://jqueryui.com/demos/accordion/#option-navigation),它会根据您的链接打开相应的手风琴“抽屉”来访。

但是活动类没有被添加到当前链接。

有什么想法吗?

【问题讨论】:

  • 我认为您可能需要一个正则表达式。 href="website.com" 和 href="website.com" 有什么区别?
  • 尝试使用正则表达式仍然无法正常工作。将正则表达式代码添加到问题中。

标签: jquery accordion jquery-ui-accordion


【解决方案1】:

我会对 href 值执行搜索功能。如果您有多个页面的链接,那么您可以将代码进一步包括window.location.pathname,但这是搜索域名的良好开端:

$("#accordion a").each(function() 
{
    if (this.href.search(window.location.hostname) != -1)
    {
        $(this).addClass("active-sidebar-link");
    }
});​

或者,正如我在上面的评论中所说,您可能想要使用正则表达式。

【讨论】:

  • Regex 是赢家,谢谢!我用于该站点的平台很糟糕,缓存没有更新,这就是为什么我第一次说它不起作用的原因。回复:搜索解决方案,使我的所有链接都处于活动状态,所以在这种情况下不好,但将其标记为正确答案。
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多