フロントの人の雑多メモ

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

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までは同様の処理が必要なようです。

これでもできなかったり、もっといい方法があったらコメントで教えてください!

コメント

内容を確認の上、個人情報などは省いて掲載させていただきます。

お名前・メールアドレスも入力する

メールで返信がほしい場合に入力してください。

頂いた個人情報は開示しません。返信のためだけに利用いたします。

直接送信されます。確認の上、「送信」してください。

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る


または以下のボタンからなにか買って応援 (PR)

Amazon

楽天市場

Yahoo!ショッピング

Amazonのアソシエイトとして「けん」は適格販売により収入を得ています。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る