[英]how to dynamically add a class to nav options in HTML5 page
我有以下包含文件,可为我的html页面创建菜单:
function menu(){
document.write("<nav>");
document.write('<ul class="nav nav-pills pull-right dynamic-highlight">');
document.write('<li role="presentation"><a href="index.html">List Widgets</a></li>');
document.write('<li role="presentation"><a href="create_widget.html">Create Widget</a></li>');
document.write('<li role="presentation"><a href="create_group.html">Create Widget Group</a></li>')
document.write('<li role="presentation"><a href="department_widget_list.html">Department Widget List</a></li>')
document.write('<li role="presentation"><a href="group_membership_list.html">Group Members List</a></li>')
document.write('<li role="presentation"><a href="site_conf.html">Site Configuration</a></li>')
document.write('</ul>')
document.write('</nav>')
}
包含此菜单的每个页面都有如下代码:
<head>
... stuff....
<script type="text/javascript" src="menu_html.js"></script>
</head>
<body>
<div class="container"><br>
<div class="header clearfix">
<script type="text/javascript">
menu();
</script>
我添加了以下JavaScript,以尝试查找所有“
$(document).ready(function() { var loc = window.location.pathname; loc = loc.substring(1); console.log(loc); $('.dynamic-highlight').find('a').each(function() { console.log($(this).attr('href')) $(this).addClass('active', $(this).attr('href') == loc); //$(this).addClass("active"); });
使用控制台输出,我可以看到当前位置的页面名称与find方法返回的项匹配。 但是addClass似乎没有用,因为我没有以突出显示的菜单项结束。 我还尝试了.toggleClass而不是addClass。
编辑1
我没有任何错误,但是没有出现突出显示的内容。 因此,我尝试打开F12窗口并使用DOM Explorer,我尝试选择“
document.write('<li role="presentation" class="active"><a href="index.html">List Widgets</a></li>');
并刷新我的页面。 我确实看到“列表小部件”菜单项突出显示。
不知道还有什么尝试...
我将从更改menu()
函数开始,以使用循环编写链接。 然后在循环时,检查路径名是否与链接匹配,如果匹配,则将活动类添加到li中。 就像是
function menu(){
var Links = {
"index.html": "List Widgets",
"create_widget.html": "Create Widgeth",
"create_group.html": "Create Widget Group",
"department_widget_list.html": "Department Widget List",
"group_membership_list.html": "Group Members List",
"site_conf.html": "Site Configuration"
};
var Class;
document.write("<nav>");
document.write('<ul class="nav nav-pills pull-right dynamic-highlight">');
for (var Page in Links ) {
if (!Links.hasOwnProperty(Page)) continue;
Class = window.location.pathname == "/" + Page ? ' class="active"' : '';
document.write('<li role="presentation"' + Class + '><a href="' + Page + '">' + Links[Page] + '</a></li>');
}
document.write('</ul>')
document.write('</nav>')
}
如果您没有复杂的体系结构,并且在不同文件夹中没有名称相似的文件,则可以依靠window.location.pathname
与anchor href
属性进行比较:
$(document).ready(function(){
var pathname = (window.location.pathname).replace("/","");
$("li[role='presentation']")
.children("a[href*='"+ pathname+ "']")
.parent()
.addClass("active");
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.