一部の要素に単一レベルのドロップダウンがあるナビゲーション システムがあります。マウスをナビに沿って移動すると、ナビの下部から簡単に外れてしまうことを除いて、私はそれを思い通りに動作させました(インラインアイテムの2番目の全幅ラインドロップダウンです)。
私が必要としているのは、他のナビゲーション項目に干渉することなく、下に落ちたときにナビゲーションが消えるのを防ぐ方法です (そのため、これらの上にカーソルを置いたときにナビゲーションが即座に非表示になります)。
ホバー アウト イベントが呼び出されたときに、マウスを置いている要素を見つける方法はありますか? このようにして、彼らが体の上にマウスを置いているかどうかを検出し、タイマーを開始して 1000 ミリ秒程度でナビを非表示にすることができました。
私は hoverIntent を試しましたが、あるナビゲーション項目から別のナビゲーション項目への移動を遅らせる余裕がないため、これは私が必要としているものには機能しません...それはナビゲーションを非常に使いにくくします!
それか、マウスの位置を使用して単にナビゲーションの下部から落ちたかどうかを検出する方法はありますか?
どんな助けでも大歓迎です。現在のナビゲーションの Jquery は次のとおりです。
var navDisplayTimer;
var navDisplayObject;
$("#main-nav > li").addClass("js-enabled");
$("#main-nav > li").hover(function(){
$(this).addClass("hovered");
if ($(this).find("ul").length != 0) {
$(this).parent().stop().animate({borderWidth: "22px"}, 400);
if($(this).parent().css("borderWidth") == "22px 22px 22px 22px") {
$(this).find("ul").show();
} else {
navDisplayObject = this;
navDisplayTimer = setTimeout(function() {
$(navDisplayObject).find("ul").show();
}, 300);
}
}
},function(){
clearTimeout(navDisplayTimer);
$(this).find("ul").hide();
$(this).parent().stop().animate({borderWidth: "2px"}, 400);
$(this).removeClass("hovered");
});