为什么不只使用 CSS 来完成这一切?
见http://jsfiddle.net/DebVr/8/
注意:为了看到白色边框,背景是蓝色的。
编辑:
如果你想要一些功能,你可以在以后添加它,但我认为基础应该是 CSS。
在此处查看具有某些功能的代码:http: //jsfiddle.net/DebVr/11/
var links=$('#bar1>li>a').each(function(index,obj) {
obj.tabindex=index+1;
});
$('#bar1>li>a').focus(
function(){$(this).siblings('ul').show();}
);
$('#bar1>li>a').blur(
function(){$('#bar1>li>ul').hide();}
);
编辑2:
如果要在单击时再次隐藏子菜单,请使用以下代码:
var links=$('#bar1>li>a').each(function(index,obj) {
obj.tabIndex=index+1;
});
$('#bar1>li>a').focus(function(){
$(this).siblings('ul').addClass('show');
});
$('#bar1>li>a').mousedown(function(){
$(this).siblings('ul').toggleClass('show');
});
$('#bar1>li>a').blur(function(){
$(this).siblings('ul').removeClass('show');
});
和 CSS:
#bar1>li>ul.show{
display:block;
}
在这里看到它:http: //jsfiddle.net/DebVr/16/
编辑 3:
在上面的代码中,我替换obj.tabindex
为obj.tabIndex
,并更新了 jsfiddle。
问题是,如果您单击子菜单,锚点会失去焦点,然后子菜单就会消失。在 Chrome 上,可以很容易地修复将focus
事件设置为#bar1>li
而不是#bar1>li>a
,但随后该事件在 firefox 上不起作用......我正在研究解决方案,但同时您可以使用http://jsfiddle.net/DebVr/ 16/。
编辑4:
最后,固定代码:http: //jsfiddle.net/DebVr/18/
它适用于 Chrome、Firefox 和 IE。