2012-03-12 26 views
1

シンプルなi希望!jquery .slideDown()アニメーションの終了前にJavascriptリスナーが起動しない場合

私は( 'itemID')。mouseoverを持っているので、メニューボックスのjqueryスライドダウンアニメーションが発生します。 問題は、マウスがslideDown()のアミノ化の前に元のアイテム(この場合はテキストリンク)を離れると、.mouseleave関数が呼び出されないことです。

それ以外はうまくいきます!

これは、イム使用して何である:(menu14はテキストリンクで、FunctionsMenu3は、メニュー項目を含む隠されたdiv要素である)

$('#menu14').mouseover(function() { 
    $('#FunctionsMenu3').slideDown('fast', function() { 
    // Animation complete. 
    }); 
}); 

$('#FunctionsMenu3').mouseleave(function() { 
    $('#FunctionsMenu3').slideUp('fast', function() { 
    // Animation complete. 
    }); 
}); 

JS CANTが解雇されることを私には思えるやってその忙しいので、スライド... サイトはhttp://www.impero-classroom-management.com でご覧になれます!

+0

'mouseleave'はIEのみです(これはjQueryで修正されていますが)。あなたはまだ 'ホバー(hover)'構造を使ってみましたか?参照:http://api.jquery.com/hover/ – m90

答えて

0

mouseleaveの場合、現在のアニメーションをキャンセルするには.stop()を試してください。

$('#menu14').hover(
    function() { 
    $('#FunctionsMenu3').slideDown('fast'); 
    }, 
    function() { 
    $('#FunctionsMenu3').stop().slideUp('fast'); 
    } 
); 
+0

こんにちはChristoph! それは私が欲しいものに近いですが、それは99%働いていますが、私がホバーしてすぐに離れると、次の時間は彼がそれがキャンセルされた高さにスライドします! IEの場合は、私はそれが完全に閉じますが、次の時間は、そのレベルに落ちるだろう半分の方法を持っていたときに残っていた...どのように奇妙な! –

+0

両方の関数にstop()があります – Straseus

0

まあ、私は最後に、ドロップダウンをアニメーション化しないで、スライドだけを上げています。

修正はしていませんが、本当にやることができました!

$('#FunctionsMenu5').mouseleave(function() { 
    $('#FunctionsMenu5').slideUp('fast', function() { 
    // Animation complete. 
    }); 
}); 
$('#menu15').mouseover(function() { 
    $('#FunctionsMenu5').show(); 
}); 
関連する問題