2011-07-29 13 views
1

これは一般的な問題だと確信しています。私はこのサイトで多数のスレッドを試して問題を解決しようとしていますが、正常に動作しないようです。基本的には、親が上に乗ったときに表示される必要がある子メニューがありますが、読み込みが完了する前にマウスをメニュー項目から離した場合は、再び上に移動すると新しいトグル高さが間違っています。それが理にかなっていれば?jquery hover animate height(toggle)

http://annawhitlam.website.2011.360southclients.com/

(会社概要メニューが子を持つ)そして、私のコードは次のとおりです:私はそれが働いて取得しようとしているサイトはこちら

$("#menu .content ul li.parent").hover(function(){ 
    $(this).find("ul").stop().animate({ height: "toggle" }, 150, "easeInSine"); 
}, function(){ 
    $(this).find("ul").stop().animate({ height: "toggle" }, 350, "easeInSine"); 
}); 

すべてのヘルプ感謝されます:)

答えて

4

また、あなたが代わりにアニメーションを停止するこれを試すことができます。

それを動的にするには、このような何かを試してみてください。

$("#menu .content ul li.parent").hover(function(){ 
    if($(this).find("ul:not(:animated)").length) 
    $(this).find("ul").animate({ height: "toggle" }, 150, "easeInSine"); 
    else 
    $(this).find("ul").show(); 
}, function(){ 
    if($(this).find("ul:not(:animated)").length) 
     $(this).find("ul").animate({ height: "toggle" }, 350, "easeInSine"); 
    else 
     $(this).find("ul").hide(); 
}); 
2

toggleではなく、特定の値に高さを設定する必要があります。誰かがアニメーションを終了する前にマウスをオブジェクトの上または上に動かすと、トグルされた高さがアニメーションの中間にあった何パーセントにも保存されます。

$(document).ready(function() { 

    var hoverObject = "#menu .content ul li.parent"; 

    var originalHeight = $(hoverObject).height(); 

    $(hoverObject).hover(function(){ 

     $(this).find("ul").stop().animate({ height: 0 }, 150, "easeInSine"); 
    }, function(){ 

     $(this).find("ul").stop().animate({ height: originalHeight }, 350, "easeInSine"); 
    }); 
}); 
+0

があり、それを動的にする方法はありませんか?高さが変わるかもしれないので、それだけです。 – SoulieBaby

+1

私の答えが更新されました。 –

0

私はあなたと同じ問題を抱えていたが、これは私がそれを固定方法です:

$("#menu .content ul li.parent").hover(function(){ 
    $(this).find("ul").slideDown(150, "easeInSine"); 
}, function(){ 
    $(this).find("ul").slideUp(350, "easeInSine"); 
});