如何使用javascript/jQuery激活菜单链接
How to make a menu link active using javascript/jQuery?
我在一个公共头文件中有一个静态菜单。每当我通过点击菜单中的链接访问任何页面时,我都需要点击链接上的图像作为激活链接的指示符。
下面是我使用的菜单的HTML
<ul id="in-menu">
<li><a href="unleashing-your-heart" >home</a></li>
<li><a href="fromdaniella" >from Daniella</a></li>
<li><a href="material-list" >material list</a></li>
<li><a href="program" >program</a></li>
<li><a href="testimonials-2" >testimonials</a></li>
<li><a href="#">login</a></li>
</ul>
如何使用jQuery或javascript来实现所需的功能?
这个不需要javascript/jQuery
您可以做的是在<body>
元素或主容器div
上的HTML结构顶部附近的某个位置为每个页面提供一个唯一的ID或Class。。然后给菜单中的每个链接一个唯一的ID或类(如果使用类,它们可以与第一个相同)
例如
<body class="nm-unl">
<ul id="in-menu">
<li class="nm-unl"><a href="unleashing-your-heart" >home</a></li>
<li class="nm-dan"><a href="fromdaniella" >from Daniella</a></li>
<li class="nm-mat"><a href="material-list" >material list</a></li>
<li class="nm-pro"><a href="program" >program</a></li>
<li class="nm-tes"><a href="testimonials-2" >testimonials</a></li>
<li class="nm-log"><a href="#">login</a></li>
</ul>
</body>
因此,在你的主页上,body
类可能是nm-unl
,而你的登录页面上可能有body
类nm-log
等。菜单本身永远不会改变,所以它仍然可以在一个公共文件中
然后在CSS中,每个链接都可以被专门针对。。假设你的普通链接没有图像,但:hover
和你的"当前"页面有
#in-menu a {background: none;}
#in-menu a:hover {background: url(image.png) no-repeat top center;}
然后,您可以将新的/特定的选择器分组到悬停规则选择器中,这些规则比普通的#in-menu a {}
规则更具体,而且它们只适用于您的"当前页面链接",即当页面上的两个类相同时
.nm-log #in-menu .nm-log a,
.nm-tes #in-menu .nm-tes a,
.nm-pro #in-menu .nm-pro a,
.nm-mat #in-menu .nm-mat a,
.nm-dan #in-menu .nm-dan a,
.nm-unl #in-menu .nm-unl a,
#in-menu a:hover {background: url(image.png) no-repeat top center;}
您仍然需要选择器中的#in-menu
ID以及这两个类,因为否则选择器将没有足够的权重来覆盖默认规则
jQuery解决方案将以类似的方式工作,逻辑将是相同的。您仍然需要一个唯一的页面指示符,即主体类或ID,然后检查主体ID/class并将当前类添加到相关的匹配链接中。
这里有一个基于jquery的解决方案:
1) 识别每个页面的
2) 将该id与您的菜单项匹配
3) 相应地更改css
<script>
pageID = $('#pageID').val();
$( "li" ).each(function( index ) {
listItemText = $(this).html();
listItemText = listItemText.toLowerCase();
if(listItemText == pageID)
{
$(this).css('color','red');
}
});
</script>
<style>
li{
color:green;
}
</style>
<input type="hidden" id="pageID" value="contact" />
<ul>
<li>Home</li>
<li>About</li>
<li>Portfolio</li>
<li>Contact</li>
</ul>
http://jsfiddle.net/CnEsF/
每一步都有很多方法,因此我的回答风格就是这样。每个步骤都可以以不同的方式执行。识别页面可能涉及使用隐藏输入或其他DOM元素,或者解析URL。匹配将要求您标准化您的脚本,这样您的条件就不会失败。。。我使用了小写的方法,但还有其他方法。最后,可以通过分配一个已经具有样式的新类、使用jquery修改DOM,甚至在使用PHP构建页面时分配正确的类来更改CSS。
希望这能帮助
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 在GXT中激活上下文菜单时,如何保持选中的文本高亮显示?(EXT GWT 2.x)
- 通过下拉菜单激活Javascript命令
- 使用Selenium WebDriver单击下拉菜单不会激活Javascript来添加或删除页面中的项目
- 如何在刷新后激活菜单选项卡
- 数据切换=“;下拉菜单”;激活路由重定向,而不是yeoman中的下拉菜单
- 使用 Jquery 单击菜单链接时,激活或添加菜单选项卡上的类活动
- 当目标处于顶部滚动状态时,如何从菜单中激活项目
- 激活下拉菜单时动态更改标题的位置
- Jquery:选项卡式菜单导航,根据所选菜单激活和停用
- AngularJS ui-router - 设置菜单激活
- 使用 Greasemonkey 更改变量或激活 JS 链接的<选择>下拉菜单
- 如何通过单击主菜单栏的子菜单来激活/聚焦仪表板UI选项卡
- 离子改变侧面菜单图标悬停和激活
- 激活引导下拉菜单悬停
- 自定义侧边导航菜单在Durandal更改样式时激活
- 鼠标经过时间后激活弹出菜单,然后在鼠标离开时取消激活
- 仅通过单击元素来激活菜单
- 通过点击菜单来拒绝激活菜单
- 阻止通过单击菜单来激活菜单