我正在建造一个导航手风琴。手风琴的每个部分都有一组链接。触发代码如下所示:
$(document).ready(function() {
$(".selector").accordion({
collapsible: true,
active: false,
navigation: true
});
});
这一切都运行良好和花花公子,直到每组中的一个链接被编辑为指向单个文件,称之为foo.html。所以现在如果你导航到foo.html,location.href会匹配手风琴的每个部分(因为每个部分都有一个链接)并打开所有部分,从而破坏了手风琴的目的。
所以我很确定我需要使用navigationFilter
选项,但我已经搜索了它的生活地狱,并且没有找到任何关于如何构建与之关联的函数的示例。
帮帮我,Stack Overflow!
答案 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;
} });