クリックするとリストが出現するコード
See the Pen jQueryナビゲーションメニュー by バイオハックch (@synd1090) on CodePen.
上の「navigation」をクリックすると、display:noneに設定されていたul要素が出現するようになります。再度クリックすると消えます。
jQueryを読み込ませる
jQueryを読み込ませるには、ダウンロードしてファイルを指定してやる方法と、Web上から読み込ませる(CDN)方法があります。今回はCDNを用いています。
<script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
jQueryのCDNは次のページで公開されているので、新しいヴァージョンを選んでコードを取得し張り付けましょう。張り付けるのは、bodyが終わる直前です。そうしなければ、動作させたい要素に働きかけることができません。
googleのCDNでもjQueryを利用することができます。
https://developers.google.com/speed/libraries/#jquery
jQueryを書いてみる
今回のコードは次のようになりました。
$(document).ready(function() {
$('.submenu h3').on('click', function() {
$(this).next().toggleClass('hidden');
});
});
$(document).ready(function(){});の意味
jQueryを書く際の決まり文句です。意味は、HTMLが読まれたら、function内の{ }の処理をするという意味です。
$(‘.submenu h3’)の意味
jQueryでは要素を取得する際には、$(`セレクタ`)で示します。$()メソッドも、querySelectorAllメソッドもどちらもセレクタを拾う意味では同じですが、その後の処理が違います。querySelectorAllメソッドでは、取得した要素は配列ような形で保管されていますが、$()メソッドはjQueryオブジェクトに変換して保存しています。jQueryオブジェクトは、メソッドとプロパティを持っており、メソッドを使用することが可能となります。
$(‘.submenu h3’).on(`click`,function(){ });の意味
$()で要素を取得した後は、onメソッドが続いています。onメソッドは、イベントを設定します。パラメーターには2つあり、1つ目にイベント名を示します。イベント名も定められており、click、submitなどがあります(いずれもonclickなどからonを取った形)。
2つ目のパラメーターには、イベントが発生した際の処理を書きます。
$(this)の意味
$(this)はイベントが起こっている要素を指します。複数の同じ要素(例えば、submenuクラスのh3が複数)の場合でも、クリックした要素のみを取得します。
$(this).nexの意味
nextはトラバーサルと呼ばれるjQueryのメソッドです。意味は、「すぐ次の弟要素を取得する」というものです。
今回のコードでは、thisはsubmenuクラスのh3を取得しているので、その次に続く、ul要素(class =”hidden”)を取得します。
$(this).next().toggleClass(‘hidden’);の意味
taggleClassメソッドは、( )内のクラス名を追加・削除を行います。( )内のパラメーターに指定されているクラス名が付いていれば削除、付いていなければ追加をします。