高亮显示单击菜单链接
Highlighting onclick menu link
我在突出显示"当前"链接时遇到问题。链接的布局很简单,比如:
主页|关于| Jordon
例如,一旦用户单击某个链接,该特定链接就会突出显示。
我试过使用这个功能:
$(document).ready(function() {
$("#menu li a").click(function (e) {
e.preventDefault();
$("#menu li a").addClass("current").not(this).removeClass("current");
});
});
HTML
<div class="main"> <div id="menu"> <ul> <li><a onclick="window.location='index.action'" href="#" class="current">Home</a></li> <li><a onclick="window.location='about.action?c=azuki'" href="#">About</a></li> <li><a onclick="window.location='about.action?c=jordon'" href="#">Jordon</a></li> <li> </ul> </div> </div>
CSS
#菜单li a.current{color:#3558b0}
$('#menu').on( 'click', 'a', function() {
$('#menu a').removeClass( 'current' );
$(this).addClass( 'current' );
});
虽然JQuery代码有效,但标记不正确。我已经为您提供了以下工作演示:
JsFIDDLE
元素级事件将在jQuery(或任何其他附加库)之前激发。你的问题是执行命令。
先试试这个:
<div id="menu">
<a onclick="alert('First');">Helllo, World!</a>
</div>
$('a').on('click',function(e){
alert('Second');
e.preventDefault();
return false;
});
onclick
在jQuery有机会preventDefault()
/取消事件之前触发并设置window.location
。我的建议是按照预期使用href
,并在HTML上进行jQuery调整。
经验法则:为标记保留标记,为脚本保留脚本;不要混在一起。(例如,避免使用onclick
属性)。
如果你遵循这条规则,你就可以向后兼容旧浏览器/禁用JavaScript的浏览器,同时仍然为新浏览器提供扩展功能。现在允许缓存功能,而不是在每个标签中嵌入重复任务,这样也有可能节省带宽。
话虽如此,试试这个:
<div id="menu">
<ul>
<li><a href="index.action" class="current">Home</a></li>
<li><a href="about.action?c=azuki">About</a></li>
<li><a href="about.action?c=jordon">Jordon</a></li>
</ul>
</div>
$(function() {
$('#menu a').on('click',function (e) {
var $this = $(this);
$this.closest('ul').find('a').removeClass('current');
$this.addClass('current');
e.preventDefault();
});
});
不过,我仍然不确定您希望实现什么,因为在window.location
加载后,您应用的任何类在下一次访问页面时都将毫无意义(除非您使用AJAX)。但是,您可以引用$this.prop('href')
,并在单击事件中使用它来进行任何需要的操作。
如果可以去掉onclick
(即使用href
),则可以使用CSS ONLY。您不需要jQuery代码。请参阅此处:
CSS:
#menu li a.current {color:#3558b0}
#menu li a:active,
#menu li a:focus{
color:#fff;
background-color:red;
}
HTML
<div class="main">
<div id="menu">
<ul>
<li><a href="#" class="current">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Jordon</a></li>
<li> </ul> </div>
</div>
下面是一个jfiddle:http://jsfiddle.net/fUL3w/10/
- 我的下拉菜单中的链接不起作用
- 绝对链接/相对链接均未获胜't在菜单中工作
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- 当主导航链接悬停时,在侧菜单中显示链接
- 如何在每个下拉菜单项的每个类别下输出链接
- 下拉菜单在我进入链接之前消失了
- 如何分配数据切换=“;下拉菜单”;用于wordpress中的父链接
- 用这个jQuery动画菜单悬停超链接
- 每个链接的菜单下方的进度条
- Php菜单查询数据库并显示文本/链接
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 单击手风琴菜单外的链接时折叠jQuery手风琴
- 在阻止默认操作时启用菜单的链接
- jQuery UI链接选择菜单.单击按钮时窗体将重置
- 如何在单击子链接时停止垂直菜单的手风琴
- 当屏幕尺寸较小时,可使用Javascript向移动菜单添加链接.不再有效
- 下拉显示Javascript链接菜单的问题
- 链接菜单w/MouseOver javascript
- 启动.滚动链接菜单并修复页面顶部的导航栏
- 角度 JS 指令模糊事件不适用于链接菜单