0

更新:

尝试对 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),它会根据您访问的链接打开相应的手风琴“抽屉”。

但是,活动类并未添加到当前链接中。

有任何想法吗?

4

1 回答 1

0

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

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

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

于 2012-05-12T20:39:50.737 回答