私がやったことはアプローチを変えました。私はこのフィドルでイベントキャッチャーdivを作成しました:
http://jsfiddle.net/L2J5X/2/
また、メニューがアニメーション化するdivにマウスが移動したとき、メニューがアニメーション化するdivからマウスが移動したときに、イベントハンドラーが追加されました。
function dothething(amover)
{
if(amover)
{
$(".nav").animate({top: '0px'}, 200, "linear");
}
else
{
window.setTimeout(function(){if(!$amthere){
$(".nav").animate({top: '-40px'}, 200, "linear");
}},100);
}
}
$("#detect").mouseover(function(){dothething(true);});
$("#detect").mouseout(function(){dothething(false);});
$("#mainNav").mouseover(function(){$amthere=true;});
$("#mainNav").mouseout(function(){$amthere=false;});
$amthere = false;
divは絶対的にトップのz-indexで配置されるため、イベントは常にキャッチされます。ランダムに配置されたときに他のdivが何をするかに関係なく(大きな緑色のブロックを参照)。
これが少し役立つことを願っています。
* 編集 *
キャッチャーdivからメニューに移動するときに非表示にならないように短い遅延を追加しました。これが$amthere変数の目的であり、メニューに表示されているかどうかを確認します。次に、100ミリ秒の遅延で、実際のマウスアウトに進むのが適切かどうかを確認します。そうでない場合は、何もしない場合は、非表示メニューを非表示にします。