jQueryのonの使い方を解説!onを正しく使いこなそう
- システム
エンジニア - onメソッドとはどういった機能を持っているのでしょうか?
- プロジェクト
マネージャー - onメソッドとはユーザーのイベント処理を記述するためのメソッドです。ここではよく利用されるonメソッドについて見ていきましょう。
jQueryのonとは?
jQueryはJavaScriptで利用できる豊富な機能を持つライブラリです。そのjQueryのonメソッドは、ユーザ操作に関連した様々なイベント処理を行えるとても便利な機能です。今回はonメソッドについて解説しましょう。
なおjQueryを実行するには、htmlファイルのheadタグ内で以下のようにjQueryのライブラリの設定が必要です。jQueryは定期的にバージョンアップされるので、最新かどうか常にチェックをしてください。
<script src=”https://code.jquery.com/jquery-3.5.1.min.js”></script>
ボタンのクリック処理
jQueryのonの基本的な使い方を紹介しましょう。htmlに以下のようなボタンがあるとします。
<button>button</button>
以下のjQueryでボタンがクリックされた時にログを出力できます。$(document).readyはページ全体が読み込まれた時にfunctionの処理を行う、と言う意味です。documentや’button’の部分はセレクタと言い、ここに操作の対象を記述します。’click’はイベント名で、これでbuttonタグがクリックされた時にfunctionの中身を実行するという意味になります。
$(document).ready(function(){
$(‘button’).on(‘click’, function() {
console.log(‘ボタンが押下されました。’);
})
});
jQueryの記述とコンソールのログ出力について
なおjQueryはscriptタグ内に記述します。長くなる場合はheadタグに以下のように記述して、別のjsファイルに分けましょう。
<script type=”text/javascript” src=”script.js”></script>
console.logの出力を見る方法は、Google Chromeの場合は該当するhtmlページが出ている時にF12キーを押して、DevToolsのConsoleタブを選択することで見られます。ログよりポップアップの方が良い人は、以下のようにしましょう。
alert(‘ボタンが押下されました。’);
複数のイベントの実行
onメソッドは複数のイベントを記述することができます。jQueryの記述を以下のように変えてみましょう。
$(document).ready(function(){
$(‘button’).on(‘click keypress’, function() {
console.log(‘ボタンが押下されました。’);
})
});
onのイベントにkeypressが追加されています。これでボタンにフォーカスが当たっている時にキーを押すと、マウスクリックと同様にfunctionが実行されます。
オブジェクトの指定
onメソッドにはオブジェクトを指定することができます。オブジェクトとはJavaScriptで扱うデータの総称です。htmlが以下のようになっているとします。
<button id=”b_1″>button1</button>
<button id=”b_2″>button2</button>
jQueryは以下のように記述します。
$(document).ready(function(){
$(‘#b_1’).on(‘click’, {number: ‘一番’}, dispLog);
$(‘#b_2’).on(‘click’, {number: ‘二番’}, dispLog);
function dispLog(obj) {
console.log(obj.data.number + ‘が押下されました。’);
}
});
オブジェクトを渡すonの説明
ボタンにはそれぞれ異なるidが付いています。セレクタは$(‘#id名’)でタグのidを指定できます。今回のonではイベント名の次に{}で囲まれたオブジェクトを指定しています。numberがオブジェクトの名前で:の次がその値です。functionにはdispLogを指定し、クリックでこれが実行されます。
dispLogにはオブジェクトが渡されていて、obj.data.numberでアクセスできます。このサンプルを実行してボタンをクリックすると、それぞれ違ったログが出力されます。
一番が押下されました。
二番が押下されました。
onメソッドのデリゲート機能
onメソッドのデリゲートと言う機能を説明します。htmlが以下のようになっているとします。
- No.1
- No.2
- No.3
<ul>
<li>No.1</li>
<li>No.2</li>
<li>No.3</li>
</ul>
jQueryが以下のようになっていて、liタグのテキストがクリックされるとログが出力されます。
$(document).ready(function(){
$(‘li’).on(‘click’, function() {
console.log(‘クリックされました。’);
})
});
デリゲートでイベントを一か所にまとめられる
上のjQueryでは3つのliタグにイベントが設定されます。これをその親のulタグに委譲(デリゲート)して、イベント発生個所を1つにすることができます。以下のように記述します。
$(document).ready(function(){
$(‘ul’).on(‘click’, ‘li’, function() {
console.log(‘クリックされました。’);
})
});
今回のサンプルではあまり役に立つように感じられませんが、次の項でデリゲートの活用例をお見せしましょう。
appendメソッドの落とし穴
htmlが以下のようになっているとします。
<div>
<button>button1</button>
</div>
jQueryを以下のように記述します。
$(document).ready(function(){
$(‘button’).on(‘click’, function() {
console.log(‘ボタンが押下されました。’);
})
$(‘div’).append(‘<button>button2</button>’);
});
親タグにデリゲートすることで順番に左右されなくなる
上のサンプルではappendというメソッドでボタンを後から追加しています。これを実行すると、button1をクリックするとログが出ますが、button2では出ません。onメソッドの後でappendしているので、反応しないのです。
appendがonの前であれば反応しますが、そういった順番を考慮するのはjQueryの記述が増えてくると困難です。
このようなケースでデリゲートが役立ちます。onメソッドの箇所を以下の様に変えましょう。
$(‘div’).on(‘click’, ‘button’, function() {
console.log(‘ボタンが押下されました。’);
})
これでbutton2のクリックでログが出るようになりました。buttonの親のタグのdivにイベント処理をデリゲートしたことで、順番に左右されなくなったのです。
offでイベントを削除する
offメソッドを使うとイベント発生を削除できます。htmlが以下のようになっているとして、
<button>button</button>
以下のjQueryを記述しても、ログは出ません。offメソッドですぐに削除されているからです。jQueryではイベントを止めたい時があるので、その場合に役立ちます。
$(document).ready(function(){
$(‘button’).on(‘click’, function() {
console.log(‘ボタンが押下されました。’);
})
$(‘button’).off(‘click’);
});
- システム
エンジニア - なるほど。デリゲートを利用してイベント処理を一回で済ませることも可能なんですね。
- プロジェクト
マネージャー - はい。ここでは基本のメソッドを見ていきました。他にも様々なイベントに対応したメソッドがありますので、試しながらマスターしていきましょう。
onメソッドを駆使してjQueryを活用しよう
jQueryのonメソッドを解説しましたがご理解頂けましたでしょうか。今回はほとんどマウスクリックのみでしたが、onメソッドは他にも様々なイベントに対応できます。
是非こちらを活用してjQueryのコードを記述してください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)