jQueryの.slideUp()や.slideDown()で動かない問題の対処法!

jQueryの.slideUp()や.slideDown()が効かない問題の対処法についてサンプルコード付きで解説します。jQueryの.slideUp()や.slideDown()が効かない原因としては主に2つあります。その原因と解決策をそれぞれ解説します。

コンテンツ [表示]

  1. 1jQueryの.slideUp()や.slideDown()で動かない問題
  2. 2jQueryの.slideUp()や.slideDown()で動かない問題の対処法
  3. 2.1jQueryの.slideDown()で動かない問題の原因
  4. 2.2jQueryの.slideDown()で動かない問題の対処法
  5. 3まとめ

jQueryの.slideUp()や.slideDown()で動かない問題

jQuery.slideUp().slideDown()が効かない問題というのはよく目にします。

実際に.slideUp().slideDown()が効かない例として以下のようなものがあります。

下記のサンプルコードをを見てみましょう。「Menu」をクリックしてみて下さい。
.slideUp()は機能しますが、.slideDown()が機能しないことが分かります。

上記のサンプルコードのように.slideUp()は効いているのに、.slideDown()が効かないです。

以降こちらの解決策を解説します。

jQueryの.slideUp()や.slideDown()で動かない問題の対処法

ではjQueryの.slideUp().slideDown()で動かない問題の対処法について解説します。

jQueryの.slideDown()で動かない問題の原因

display:noneが付く箇所に着目

1つ目のサンプルコードの.slideDown()がなぜ効かなかったというと$('.nav > *').slideUp();でnav要素にdisplay:none;が付くと思いきや、実際にdisplay:none;が付いているのはその1つ下の子要素であるul要素に付いていることが分かります。

このようにJQueryで要素として設定した1つ下の子要素にdisplay:none;が付くことが、jQueryの.slideDown()で動かない問題の原因だと考えられます。

jQueryのCDNがslim版になっている

またもう一つ.slideUp().slideDown()が効かないときの原因として、jQueryのCDNでslim版を読み込んでいるということが挙げられます。

full版でないと.slideUp().slideDown()は使えません。

jQueryの.slideDown()で動かない問題の対処法

display:noneが付く箇所に着目した場合

display:noneが付く箇所に着目した場合、1つ目のサンプルコードをif ($('.nav').is(':visible'))ではなくて、if ($('ul').is(':visible'))とすると解決します。

このように.slideDown()も効いていることが分かります。

今後.slideUp().slideDown()を用いるときは「検証ツール」でどこにdisplay:none;が付くかを確かめながら実装するとうまくいくと思います。

jQueryのCDNをfull版にしよう

slim版では.slideUp().slideDown()が効かないので、jQueryのCDNを読み込む際はfull版を使用してください。

full版は以下のコードとなります。

jQueryのCDN(full版)

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

まとめ

いかがでしたでしょうか?

ここで紹介したようにうまく検証ツールを使用しながら、jQueryの.slideUp().slideDown()を実装してみてください。

GeekHive採用サイト

関連記事