如何以编程方式打开我的手风琴菜单
How to programmatically open my accordion menu
我使用一个非常简单的jQuery手风琴脚本,但我想实现的是一种在页面加载时以编程方式打开菜单项的方法。最终,当用户直接浏览到子菜单中的页面时,该菜单将打开以识别他们所在的位置。我只是不知道如何触发负载打开…谢谢你的帮助。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>JQuery navigation test 2</title>
<script src="js/jquery-1.11.1.min.js" type="text/javascript"></script>
<style>
#nav {
float: left;
width: 280px;
border-top: 1px solid #999;
border-right: 1px solid #999;
border-left: 1px solid #999;
}
#nav li a {
display: block;
padding: 10px 15px;
background: #ccc;
border-top: 1px solid #eee;
border-bottom: 1px solid #999;
text-decoration: none;
color: #000;
}
#nav li a:hover, #nav li a.active {
background: #999;
color: #fff;
}
#nav li ul {
display: none;
}
#nav li ul li a {
padding: 10px 25px;
background: #ececec;
border-bottom: 1px dotted #ccc;
}
</style>
</head>
<body>
<ul id="nav">
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub-Item 1 a</a></li>
<li><a href="#">Sub-Item 1 b</a></li>
<li><a href="#">Sub-Item 1 c</a></li>
</ul>
</li>
<li><a href="https://google.com">Link 1</a>
</li>
<li><a href="#">Menu 2</a>
<ul>
<li><a href="#">Sub-Item 3 a</a></li>
<li><a href="#">Sub-Item 3 b</a></li>
<li><a href="#">Sub-Item 3 c</a></li>
<li><a href="#">Sub-Item 3 d</a></li>
</ul>
</li>
<li><a href="#">Menu 3</a>
<ul>
<li><a href="#">Sub-Item 4 a</a></li>
<li><a href="#">Sub-Item 4 b</a></li>
<li><a href="#">Sub-Item 4 c</a></li>
</ul>
</li>
<li><a href="https://google.com">Link 2</a>
</li>
</ul>
<script type="text/javascript">
$(document).ready(function () {
$('#nav > li > a').click(function(){
if ($(this).attr('class') != 'active'){
$(this).next().slideToggle();
$(this).addClass('active');
}
else {
$(this).next().slideToggle();
$('#nav li a').removeClass('active');
}
});
});
</script>
</body>
</html>
您可以手动将活动类应用于元素,然后当文档准备好时,将元素与活动类滑动切换。例如:
在HTML中:
<li><a href="#" class="activate-on-load">Menu 3</a>
<ul>
<li><a href="#">Sub-Item 4 a</a></li>
<li><a href="#">Sub-Item 4 b</a></li>
<li><a href="#">Sub-Item 4 c</a></li>
</ul>
</li>
Javascript部分:
$(document).ready(function () {
$('#nav > li > a').click(function(){
if ($(this).attr('class') != 'active'){
$(this).next().slideToggle();
$(this).addClass('active');
}
else {
$(this).next().slideToggle();
$('#nav li a').removeClass('active');
}
});
var toActivate = $('.activate-on-load');
toActivate.next().slideToggle();
toActivate.addClass('active');
});
应该可以。
,
我还建议为这些菜单元素添加额外的类,而不是使用这些复杂的选择器。
将代码放入$(document).ready(function() { ... });
将使其在加载时运行(一旦文档准备好)。要打开正确的手风琴,您可以使用window.location
来获取您的URL,以确定用户在哪个页面上,并相应地打开手风琴。
这可以通过添加id
s到您的菜单,以便您可以轻松地选择和打开它。
您必须使用location
或pathname
(由您决定),以便将当前页面与手风琴HREFs
进行比较。
下面是一个例子
添加JS:
var pagePath = window.location.pathname; // To be used
var splitedPath = pagePath.split("/"); //Split to match your href formating
//Find A tag that match your path, find its parent UL and the A tag before (the one which has click event);
$("#nav > li > ul > li > a[href='" + splitedPath[splitedPath.length - 1] + "']").closest("ul").prev("a").trigger("click");
首先获取位置/路径名
将其分割以匹配当前的href格式
选择父A进行模拟点击
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 我的手风琴出了问题
- jquery上的手风琴.我无法关闭活动元素
- 为什么我的引导手风琴图标在展开/折叠时没有改变
- 如何在我的网站上有多个手风琴下拉菜单.HTML,CSS JavaScript
- 自定义我的 jQuery 手风琴
- 如何让我的手风琴在所有菜单关闭的情况下加载.
- 我无法让我的jQuery手风琴在点击时折叠
- 在Twitter Bootstrap中,我如何阻止所有的手风琴在页面加载时瞬间展开
- 更新我的js手风琴选项卡,以选择性地打开和关闭内容
- 让我的button type="submit"打开另一个手风琴
- 我的JS手风琴是否可访问
- 如何以编程方式打开我的手风琴菜单
- 为什么这个BootStrap手风琴示例不能在我的页面上工作?
- 我该如何打开我的手风琴&字形图标在单击时旋转,在重新单击时反转