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を更新しました。
問題は、サブメニューをクリックすると、アンカーがフォーカスを失い、サブメニューが消えることです。focus
Chromeでは、イベントを#bar1>li
の代わりに設定することで簡単に修正できますが#bar1>li>a
、Firefoxではイベントが機能しません...私は解決策に取り組んでいますが、その間、http://jsfiddle.net/DebVr/を使用できます16/。
編集4:
最後に、修正されたコード:http: //jsfiddle.net/DebVr/18/
Chrome、Firefox、IEで動作します。