【jQuery】クリックでclassを追加・削除する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、jQueryで特定の要素がクリックされた際に指定したclass
を追加・削除する方法のご紹介しています。
Webサイトを制作する中で、何らかの要素がクリックされたら特定の処理を実行するというのは定番の処理です。フォームであれば選択されたラジオボタンやチェックボックスの値を取得して表示を切り替えたり、ナビゲーションであればボタンが押されたらサイドメニューを開くなど、クリックから始まる処理は数多く存在します。
本記事でご紹介するのは、クリックから始まる処理の中でも頻繁に使用するclass
の追加・削除(付け外し)です。具体的には、ある要素がクリックされたら指定した要素にclass
を追加あるいは削除するという処理になります。class
の追加・削除は様々な場面で使用することができる汎用的なスクリプトですので、ぜひ覚えていただければと思います。
jQueryを読み込む
jQueryを使用するため、予めjQueryの本体ファイルを読み込みます。ダウンロードして読み込む方法が一般的ですが、ここではCDNを利用してjQueryを読み込む方法をご紹介したいと思います。CDNというのはContents Delivery Network(コンテンツ・デリバリー・ネットワーク)の略称で、ネットワークを経由してウェブコンテンツを利用するサービスです。ネットワークに接続されている機器であれば利用することができます。
jQueryの本体ファイルは下記のタグで読み込むことができます。設置する場所についてはお好きな行で構いません。jQueryのスクリプトは本体を読み込んでいないと動かないので、以降でご紹介するスクリプトより前の行でjQueryの本体ファイルを読み込むようにしてください。
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
これでjQueryを使用する準備が整いました。続いてクリックイベントを取得してclassの追加・削除する方法を解説していきます。
クリックイベントを取得する
クリックイベントは下記の記述で取得することができます。
$(selector).on('click', function(){ //ここに処理を記述する内容 });
上記ではselector
に指定した要素がクリックされた際に{}
内の処理を実行します。
例として、button
というclass
を持った要素のクリックイベントを取得して、アラートを表示するスクリプトを作成してみます。
HTML
<button class="button">Click Me!</button>
jQuery
$('.button').on('click', function(){ alert('クリックイベントが取得できていれば表示されます。'); });
下記は上記を実行した際のデモです。Click Me!と記載されたボタンをクリックするとアラートが表示されます。もし表示されない場合はスクリプトを見直してみましょう。
See the Pen 1278-1 by ryohei (@intotheprogram) on CodePen.
これでクリックイベントが取得できました。続いてclass
の追加・削除方法について解説していきます。
classを追加・削除するメソッド
jQueryにはclass
を追加・削除することができるメソッドが予め用意されています。下記リストに記載の3つのメソッドになります。
- addClass()
- removeClass()
- toggleClass()
一つずつ詳しく見ていきましょう。
addClass()
addClass()は指定した要素にclass
を追加することができるメソッドです。指定方法は簡単で、下記のように記述するだけでclass
を追加することができます。
$(selector).addClass(className);
上記の例ではselector
の要素に対して、addClass()
の引数に指定したclassName
というclass
を追加しています。
試しに一つサンプルを書いてみます。button
のclass
を持っている要素がクリックされたらone
というclass
を追加してみます。class
が追加されたことが視覚的にわかるようにone
には文字色を赤にするスタイルを定義しておきます。
HTML
<button class="button">Click Me!</button>
CSS
.one{ color: red; }
jQuery
$('.button').on('click', function () { $('.button').addClass('one'); });
下記は作成したスクリプトのデモになります。Click Me!と書かれたボタンをクリックすると、one
のclass
が追加され、文字が赤色になります。addClass()
によってbutton
にone
のclass
が追加されたため、スタイルが適用され、文色が上書きされます。
See the Pen 1278-2 by ryohei (@intotheprogram) on CodePen.
以上がaddClass()
の使い方です。続いて指定した要素のclass
を削除するremoveClass()
のメソッドについて解説していきます。
removeClass()
removeClass()は指定した要素からclass
を削除するメソッドです。下記のように記述することで要素からclass
を削除することができます。
$(selector).removeClass(className);
上記の例ではselector
の要素からremoveClass()
の引数に指定したclassName
を削除することができます。
試しに一つサンプルを書いてみます。前項で作成したサンプルを再利用して、予めbutton
にone
というclass
を持たせておき、removeClass()
でone
のclass
だけを削除してみます。
HTML
<button class="button one">Click Me!</button>
CSS
.one{ color: red; }
jQuery
$('.button').on('click', function () { $('.button').removeClass('one'); });
下記は作成したスクリプトのデモになります。Click Me!と書かれたボタンをクリックすると、one
のclass
が削除され、文字が白色に変わります。one
が削除されたことにより、スタイルが外れたため文字の色が変わります。
See the Pen 1278-3 by ryohei (@intotheprogram) on CodePen.
サンプルではone
のclass
だけを削除しましたが、複数のクラスをまとめて削除することも可能です。その場合は半角スペースを空けて連続してclass
を引数に指定します。
$('.button').removeClass('one two three four five');
以上がremoveClass()
の基本的な使い方です。続いてaddClass()
とremoveClass()
の機能を備えたtoggleClass()
について解説していきます。
toggleClass()
toggleClass()はclass
の追加・削除を交互に実行するメソッドです。要素に指定したクラスが既に存在した場合は削除し、なければ追加するといった処理になります。
指定方法は簡単です。addClass()
やremoveClass()
と同様に記述します。
$(selector).toggleClass(className);
selector
がclassName
に指定したclassを
持っていれば削除し、なければ追加します。
試しに一つサンプルを書いてみます。button
のclassを持っている要素にone
というclassを追加あるいは削除します。上記と同様にone
というclass
には文字色を赤くするスタイルを定義しています。クリックする度に文字色が変わることが確認できると思います。
HTML
<button class="button">Click Me!</button>
CSS
.one{ color: red; }
jQuery
$('.button').on('click', function () { $('.button').toggleClass('one'); });
下記は作成したスクリプトのデモになります。「Click Me!」と記載されたボタンをクリックする度に文字の色が赤色と白色に変わることが確認できると思います。toggleClass()
によってclass
の追加・削除が実行されているからですね。
See the Pen 1278-4 by ryohei (@intotheprogram) on CodePen.
以上がtoggleClass()
の基本的にあ使い方になります。
まとめ
最後に本記事でご紹介したメソッドのリファレンスをご紹介します。より詳しく知りたい方は下記のURLをご参照いただければと思います。
addClass() | https://api.jquery.com/addClass/ |
---|---|
removeClass() | https://api.jquery.com/removeClass/ |
toggleClass() | https://api.jquery.com/toggleClass/ |
Web制作をする上でクリックイベントを取得して何か処理をする機会は多くあると思いますので、似たような処理を記述される場合は本記事の内容を思い出していただければ幸いです。
以上、jQueryで特定の要素がクリックされた際に指定したclassを追加・削除する方法のご紹介でした!
JavaScriptを基礎からしっかりと学びたい方へ
下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。