ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > JavaScript > 【jQuery】click()はイベント発火に便利!使い方を解説

【jQuery】click()はイベント発火に便利!使い方を解説

JavaScript

2022/03/24

2023/05/06

jQuery click()記事サムネイル

click()イベントは、jQueryの中でよく使われるもの。click()イベントにイベントを登録することで、さまざまな処理が実行できます。この記事では「click()イベントの使い方」、「click()イベントと混同されるon('click')メソッドとの違い」について解説します。

この記事で身につく内容
  • jQueryのclick()イベントの使い方
  • click()イベントとon('click')の違い
  • click()イベントが効かないときの対処法

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

jQueryのclick()イベントの使い方

click()イベントは、jQueryのメソッドの一つで、クリック操作で発火するイベントを実行します。

jQueryのclick()イベントの基本書式は次のようになります。

基本書式

$('セレクタ').click(function(){
  // ここにクリックしたら発火する処理を記述する
});

click()イベントにコードを当てはめると次のようになります。

click()イベントのサンプル 

<button id="js-btn">ボタンクリックでアラートが出る</button>
const btn = $("#js-btn");
btn.click(function () {
  alert('クリックされました!');
});

出力結果

See the Pen click-alert by ZeroPlus (@zeroplus-programming) on CodePen.

上のコードでは、「ボタンをクリックしたらalreatメソッドによってアラートが出る」イベントを設定しました。

このようにクリックイベントは単体では何も起きません。しかし、クリックイベントにメソッドなどさまざまな処理を記述することで、クリックしてイベントを「発火」させることができます。

click()イベントでクラスを追加・削除してスタイルを変更する

click()イベントに次のようなメソッドを適用することで、要素にクラスを追加、削除することができます。

要素にクラスを追加・削除するメソッド

  • toggleClass()メソッド
  • addClass()メソッド
  • removeClass()メソッド

 

例えば、次のように「ボタンをクリックしたら要素にクラスを追加・削除する」イベントを適用してみます。

ボタンをクリックしたらis-activeクラスを追加・削除する

  <button id="js-btn">ボタンクリック!</button>
  <div class="box"></div>
.box {
  width: 200px;
  height: 200px;
  background: orange;
  transition: .4s;
}

/* is-activeクラスが付与された状態のスタイル */
.box.is-active {
  border-radius: 50%;
}
const btn = $("#js-btn");
const box = $('.box');

btn.click(function () {
  box.toggleClass("is-active");
});

出力結果

See the Pen click-toggleClass by ZeroPlus (@zeroplus-programming) on CodePen.

CSSでis-activeクラスが付与された状態のスタイルを予め用意しておきます。ボタンをクリックすると、is-activeクラスの追加・削除が行われます。これはtoggleClass()メソッドによるものです。

click()イベントで引数を渡す

click()メソッドでは、引数を渡すことができます。

引数とは関数に渡すデータのこと。例えば次のように記述できます。

<button id="js-btn">オブジェクトを渡すボタン</button>
const btn = $("#js-btn");
const obj = {
  num: 1,
  name: "taro",
}

btn.click(obj, function () { //(引数, function()
  console.log(obj); // 引数は関数内で変数のように扱える
});

出力結果

変数「obj」というオブジェクトを作成しています。

ボタンをクリックしたらコンソール画面でオブジェクトのデータを確認することができます。なお、オブジェクトに含まれる特定のデータを取り出す場合は次のようになります。

const btn = $("#js-btn");
const obj = {
  num: 1,
  name: "taro",
}

btn.click(obj, function () {
  console.log(obj.name); // 変数objのnameデータを取り出す
});

出力結果

jquery-引数と値

これでオブジェクトに含まれるデータを取り出すことができました。

ZeroPlusgate50教材の動画

click()イベントとon('click')の違い

on()メソッドとはjQueryのメソッドの一つ。on()メソッドは指定したイベントを発火させることができます。

on()メソッドの基本書式

$('セレクタ').on(イベント名, 実行する処理());

コードを当てはめると次のように記述できます。

on()メソッドのサンプル

<button id="js-btn">ボタンをクリック!</button>
const btn = $('#js-btn');

btn.on('click', function () {
  console.log('ボタンがクリックされました。');
});

出力結果

onメソッド

 

click()イベントと同様の結果を得ることができました。

click()イベントとon('click')メソッドの違いはいったい何でしょうか?

実はこの2つの違いは、下記になります。

  • 複数のイベントを登録できるかどうか
  • jQueryで後から追加した要素に、イベントを登録できるかどうか

click()イベントはクリックイベントしか登録できない

click()イベントはクリックイベントしか登録できません。しかしon('click')メソッドでは複数のイベントを登録することができます。

例えばon('click')メソッドは次のように複数のイベントを登録できます。

on('click')メソッドで複数イベント登録

  <button id="js-btn">ボタンをクリック!</button>
  <div class="box"></div>
.box {
  width: 200px;
  height: 200px;
  background: orange;
  transition: .4s;
}
.box.is-active {
  border-radius: 50%;
}
const btn = $('#js-btn');
const box = $('.box');

btn.on({
  'click': function () {
    box.toggleClass("is-active");
  },

  'mouseover': function () {
    box.css('transform', 'translate(30%)');
  }
});

出力結果

on('click')メソッドで「クリックしたら要素にis-activeクラスを追加・削除」「ボタンをホバーしたら要素が動く」の2つのイベントが発火するようになりました。このようにon('click')メソッドでは複数のイベントを登録することができます。

click()イベントは、jQueryで後から追加された要素にイベントを登録できない

click()イベントは、afterメソッドで要素が追加されてもイベントを登録することはできません。

click()イベントで要素を追加
  <button id="js-btn">ボタンをクリック!</button>
  <div class="box"></div>
.box {
  width: 200px;
  height: 200px;
  background: orange;
}

.box2 {
  width: 100px;
  height: 100px;
  background: orange;
}
const btn = $('#js-btn');
const box = $('.box');

btn.click(function () {
  $('div').after("<button class=box2>click!</button>");
});
$('.box2').click(function () {
  $('.box2').css('background', 'red'); // 生成された要素にcssメソッドは効かない
});
出力結果
上記の場合、divタグが生成されていたとしてもjQueryによって生成されたdivタグをクリックしてもCSSメソッドは効きません。
on('click')メソッドでは次のように記述します。
on('click')メソッドで要素を追加
const btn = $('#js-btn');
const box = $('.box');


btn.on('click', function () {
  box.after('<button class="box2">クリック!</button>');
});
$(document).on('click', '.box2', function () {
  $(this).css('background', 'red'); // 生成された要素にCSSメソッドは効く
});

出力結果

on('click')メソッドの場合、要素が生成されたものであってもCSSメソッドが効きます。

click()イベントが効かないときの対処法

以下の場合で、click()イベントは動作しません。

  • jQueryで動的に追加された要素にイベントを登録できない

動的に要素を追加したり削除したりする要素に対しては、click()イベントが効きません。その場合はon('click')メソッドを使う方法に変えてみましょう。

まとめ

click()イベントはjQueryでよく使用されるメソッドです。思うように動作しない場合があるため、その場合はon('click')メソッドに切り替えるなどして、使い分けていきましょう。

 

click()イベントまとめ

  • click()イベントが登録できるのは、クリックイベントのみ。
  • 動的に追加された要素にイベントを登録することはできない。
  • click()イベントが効かない場合はon('click')を使う。
ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

\ 学んだことをSNSでシェアしよう /

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから