【jQuery】サブメニュー(様々なリストの書き方に対応)
マウスのロールオーバーで、サブメニューが右に表示されます。
【実演ページ】
http://www.usamimi.info/~sutara/sample/jq_submenu.html
ソースを見てもらえれば分かりますが、
メニューの構造に合わせてリストタグをツリー状に記述していたり、
メニューの階層ごとにまとめて記述していたり、
様々なリストの書き方に対応してサブメニューを表示するようにしています。
処理のキモ
メニューの構造通りにツリー状に記述されたリストならば、下記でOKです。
$(メインメニューのli要素).hover(
//mouseover時
function(){$(this).children('ul').show()},
//mouseout時
function(){$(this).children('ul').hide()}
);
が、そうでない場合にも対応するため、下記のようにしています。
さらに、下記も必要です。
$(メインメニューのli要素).hover(
//over
function(){
var idx = $(メインメニューのli要素).index(this);
$(サブメニューのul要素).eq(idx).show();
},
//out
function(){
var idx = $(メインメニューのli要素).index(this);
$(サブメニューのul要素).eq(idx).hide();
}
);
$(ツリー状以外のサブメニューのli要素).hover(
//over
function(){$(this).show()},
//out
function(){$(this).hide()}
);