これを行うためのより良い方法は、目立たないスクリプトを使用することです。主に必要なのは、次の.stop()
ように、前のアニメーションを停止する呼び出しです。
<script type="text/javascript">
function hoverIn(target, speed){
$(target).stop(true, true).fadeIn(speed);
}
function hoverOut(target, speed){
$(target).stop(true, true).fadeOut(speed);
}
</script>
子供が出入りするときに発火するためmouseover
、これはまだ問題です。mouseout
ただし、と を.hover()
使用するmouseenter
とmouseleave
、同じ問題が発生せず、「振動」の問題が解消されます。
目立たないバージョンは次のようになります。
$(function() {
$("ul > li").hover(function() {
$(this).find("ul").stop(true, true).fadeIn('fast');
}, function() {
$(this).find("ul").stop(true, true).fadeOut('fast');
});
});
あなたはそれを見ることができます ここ、またはさらに短いバージョン:
$(function() {
$("ul > li").hover(function() {
$(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
});
});
ここでテストできます。これらの目立たないアプローチはすべてインライン JavaScript を使用せず、複数の子メニューで機能することに注意してください。