次のようなメニューのセットがあります。
<ul class="lavalamp">
<li>Menu 1</li>
<li>Menu 2</li>
<li>
Menu 3
<ul>
<li>Sub Menu 1</li>
<li>Sub Menu 2</li>
<li>Sub Menu 3</li>
</ul>
</li>
<li>Menu 4</li>
</ul>
これにラバランプ効果を加えます。メニューにカーソルを合わせると、lavalamp の背景がホバーされたメニューに移動し、メニューがホバーされていない場合は現在のメニューに戻ります。
問題は、サブメニューにカーソルを合わせると、メニューにカーソルを合わせていないと見なされるため、ラバランプの背景が現在のメニュー項目に戻ることです。これを防ぐために、次のように jquery.lavalamp.js にホバー セレクターを追加します。
$li.not(".back").hover(function() {
if (!$('.sub-menu').is(":hover")) {
move(this);
}
}, function(){});
function move(el) {
$back.each(function() {
$(this).dequeue(); }
).animate({
width: el.offsetWidth,
left: el.offsetLeft
}, o.speed, o.fx);
};
一方、 move(this) は、溶岩ランプの背景をホバーしたメニューに移動する関数です。IE を除くすべてのブラウザで問題なく動作します。lavalamp の背景が動かず、"unsupported pseudo:hover" という JavaScript エラーが発生します。jquery サイトで検索しましたが、:hover というセレクターがありません。
上記の :hover セレクターを置き換える他の方法はありますか? どんな助けでも大歓迎です。