需要帮助jQuery UI Accordion navigationFilter选项

时间:2010-02-19 14:25:44

标签: jquery jquery-ui

我正在建造一个导航手风琴。手风琴的每个部分都有一组链接。触发代码如下所示:

$(document).ready(function() {
    $(".selector").accordion({
        collapsible: true,
        active: false,
        navigation: true
    });
});

这一切都运行良好和花花公子,直到每组中的一个链接被编辑为指向单个文件,称之为foo.html。所以现在如果你导航到foo.html,location.href会匹配手风琴的每个部分(因为每个部分都有一个链接)并打开所有部分,从而破坏了手风琴的目的。

所以我很确定我需要使用navigationFilter选项,但我已经搜索了它的生活地狱,并且没有找到任何关于如何构建与之关联的函数的示例。

帮帮我,Stack Overflow!

1 个答案:

答案 0 :(得分:6)

这是一个老问题,但我今天在同一个问题上遇到了困难,所以我想我会为其他正在寻找的人解答这个问题。

我想根据路线中的最后一项(使用ASP.NET-MVC2)使用手风琴导航过滤器进行匹配。我提出了以下解决方案。它不漂亮,但它的工作原理。

我的链接如下: http://site.com/Home/Details/IDSTRING

过滤器匹配任何以IDSTRING结尾的location.href。

您可能希望将位置解析代码移动到另一个位置,因此每个页面加载只运行一次,而不是每个手风琴元素运行一次。

$("#accordion").accordion({ animated: false, autoHeight: false, collapsible: true, navigation: true, navigationFilter: function () {
    //Accordion NavigationFilter
    var locationHrefArray = location.href.split("/");
    var locationLastString = locationHrefArray[locationHrefArray.length - 1].toLowerCase();

    var sidebarHrefArray = this.href.split("/");
    var sideBarLastString = sidebarHrefArray[sidebarHrefArray.length - 1].toLowerCase();

    return locationLastString  == sideBarLastString;
} });