5

このページ:

http://www.arvag.net/old/smsbox.de/

「Informationen」と「Überins」にカーソルを合わせると、サブメニューが表示されます。マウスを離すと非表示になります。通常、jQueryがホバーを作成するたびにキューに入れることに問題があり、その後、ホバーをすべてアニメーション化し続けます。実装しようとしましたstop()が、正しく動作しません。

これは私が使用しているコードです:

<script type="text/javascript">
    //<![CDATA[
    $(function(){
        $('#nav_menu > .center > ul > li').hover(function() {
            $(this).stop(true,true).children('ul').slideToggle('slow');
        }).click(function(){ 
            return false; 
        });
    });
    //]]>
</script>

ありがとう!

4

2 に答える 2

4

.stop()キューを停止するには両方向に行う必要があります。そうしないmouseenterと、ホバーの一部がアニメーションのキューに入れられ続けます。また、トグルしているので、次のように短縮できます。

$('#nav_menu > .center > ul > li').hover(function() {
   $(this).children('ul').stop(true,true).slideToggle('slow');
}).click(function(){ 
  return false; 
});

.stop()それがアニメーション化されているので、ul要素にが必要です。これを試してみてください。キューイングではなくアニメーションをリセットしているため、まだ少しぎこちないことがわかります。:visible別の方法は、このようにセレクターとセレクターを使用してキューを防止すること:hiddenです...私はこの効果を好みますが、あなた次第です:)

$('#nav_menu > .center > ul > li').hover(function() {
   $(this).children('ul:hidden').slideDown('slow');
}, function() {
   $(this).children('ul:visible').slideUp('slow');
}).click(function(){ 
  return false; 
});
于 2010-04-02T15:24:04.867 に答える
1

stop(true,true)ホバーオーバー部分もつけないといけないと思います。次に、私が間違っていない限り、現在進行中の他のアニメーションを中断して、独自のアニメーションを実行します。

    $('#nav_menu > .center > ul > li').hover(function() {
        $(this).stop(true,true).children('ul').slideToggle('slow');
    },function(){
        $(this).stop(true,true).children('ul').slideToggle('slow');
    }).click(function(){
        return false;
    });
于 2010-04-02T15:10:19.453 に答える