jQuery1.XでslideDown()の挙動がおかしい・開かなくなるの対処法

サイトのナビゲーションなどで、ホバーで展開するプルダウンメニューやメガドロップダウンメニューを作りたいとき
こういうjQueryを書くと思います。
$(".menu").hover(
function(){
$(".cont").stop().slideDown();
},
function() {
$(".cont").stop().slideUp();
});
実際に作成したのがこちら。ホバーしてみてください。
メニュー
- メニュー1
- メニュー2
- メニュー3
- メニュー4
- メニュー5
このサイトのjQueryバージョンは3.4.0なので問題ありませんが
slideDown()とslideUp()が jQueryバージョン1.Xだとバグる んですよね。
jQuery1.4での再現です。ホバーしたり離したりしてみてください。
iframeが正しく表示されない方はこちら
繰り返していると、開けなくなりませんか?
hover()イベントだけでなく、mouseenter()とmouseleave()を使った場合でも同様です。
最新のjQueryを使えばいいだけなのですが、そういう訳にはいかない場合の対処法をご紹介します。
対処法
jQuery1.Xの場合、このように書きます。
$(".menu").hover(
function(){
$(".cont").css("height", "").stop().slideDown();
},
function() {
$(".cont").css("height", "").stop().slideUp();
});
.stop() の前に、heightをリセットします。
すると...
jQuery1.4での再現です。
連打するとちょっと変ではありますが、開けないよりはマシじゃないでしょうか。
iframeが正しく表示されない方はこちら
調べたところ、jQuery1.0~1.9までは同様の処理が必要なようです。
これでもできなかったり、もっといい方法があったらコメントで教えてください!
お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。
または以下のボタンからなにか買って応援 (PR)