だから私はナビゲーションを持っており、jQueryのUIアニメーションを使用して、リスト項目をビューの外にスライドさせ、色を変更してからスライドして元に戻し、ボタンを別の色で表示します。
私が得ている問題は、リスト項目にカーソルを合わせるたびに、マウスが離れるまでホバーイベントが継続的にトリガーされることです。
さらに奇妙なことに、マウスが実際にリスト項目を離れたかどうかに関係なく、hover イベントの直後に mouseleave イベントがトリガーされるように見えます。これは、hover または mouseenter を使用した場合に発生します。
ここに私が持っているものがあります: HTML:
<nav>
<ul>
<a href="index.html"><li>Home</li></a>
<a href="services.html"><li>Services</li></a>
<a href="portfolio.html"><li>Portfolio</li></a>
<a href="contact.php"><li>Contact</li></a>
<a href="about.html"><li>About</li></a>
</ul>
</nav>
jQuery:
$("nav li").mouseenter(function(){
$(this).animate({bottom:"-50px"},"fast", function(){$(this).css('background','orange');$(this).css('color','#fff');});
$(this).animate({bottom:"-0px"},"fast");
}).mouseleave(function(){
$(this).animate({bottom:"-50px"},"fast", function(){$(this).css('background','white');$(this).css('color','#333');});
$(this).animate({bottom:"-0px"},"fast");
});
CSS:
nav{
float:right;
margin-top:91px;
}
nav ul, nav ul li{
display:inline;
}
nav li{
margin-left:10px;
position:relative;
padding:5px 20px;
color:#A29874;
background-color:#fff;
border-top-right-radius:5px;
border-top-left-radius:5px;
}
nav a{
position:relative;
text-decoration:none;
}
リスト項目の 1 つにマウスを非常にゆっくりと近づけると、目的の効果を得ることができます。比較的簡単なはずのこの作業に、私は頭がおかしくなりました。
私はネットを精査し、mouseenter イベントのバインドを解除するなどのことを試しました。条件を使用して、mouseleave イベントが無効になった後にのみアニメーションを実行します。
できれば私がハゲになる前に、どんな提案でも大歓迎です。ありがとう!