今回はjQueryのイベントについてまとめました。
イベントの追加・削除や複数同時に設定する方法について書いています。
jQueryのイベントとは?
jQueryでイベントを設定すると、ユーザーがWebページで行う操作に対して、処理をすることができます。
イベントを利用することで、ユーザーの操作に応じた動的なコンテンツを提供することが可能です。
例えば「ボタンがクリックされたときにメッセージを表示する」・「マウスが特定の要素に乗ったときに色を変える」といった操作です。
jQueryでイベントを設定する方法
jQueryでイベントを設定する方法について書いています。
jQueryのイベントメソッドを使ってイベントを設定したり、on
メソッドでイベントを設定することができます。
メソッドを使ってイベント処理を追加する
jQueryでは、各種イベントに対して専用のメソッドを用意しています。
例えば、click
メソッドを使ってクリックイベントを設定することができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>クリックイベントの例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="myButton">クリックしてね</button>
<script>
$(document).ready(function() {
$("#myButton").click(function() {
alert("ボタンがクリックされました!");
});
});
</script>
</body>
</html>
上記の例では、#myButton
がクリックされたときにアラートが表示されるようにしています。
「$("#myButton")
」でボタンの要素を取得して、click
メソッドでイベントを設定しています。
処理は無名関数でclick
に渡しています。今回はアラートを表示しているだけです。
実際に処理を確認すると、下記のように動作します。
onを使って追加する
on
メソッドを使うことでも、イベントを設定することができます。
on
メソッドは、動的に生成された要素に対してもイベントを設定することができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>onメソッドの例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="myButton">クリックしてね</button>
<script>
$(document).ready(function() {
$("#myButton").on("click", function() {
alert("ボタンがクリックされました!");
});
});
</script>
</body>
</html>
この例では、on
メソッドを使ってクリックイベントを設定しています。
「$("#myButton")
」でボタンの要素を取得して、「on
」メソッドでイベントを設定しています。
第1引数に設定したいイベント、第2引数に処理を渡します。
動かしてみると、先ほどと同じように動作します。
onとイベントメソッドの違いは?
on
メソッドは複数のイベントを一度に設定したり、動的に追加された要素にも対応することができます。
つまり、on
メソッドは汎用性が高くて、柔軟なイベントハンドリングが可能です。
例えば、下記のようにイベントメソッドを使用すると、追加された要素ではイベントが処理が発生しません。
「追加ボタン」を押すとボタンが追加されていきますが、追加されたボタンはイベントが動きません。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>イベントメソッドの例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="addButton">追加</button>
<div id="buttonContainer">
<button class="dynamicButton">クリックしてね</button>
</div>
<script>
$(document).ready(function() {
$(".dynamicButton").click(function() {
alert("動的に追加されたボタンがクリックされました!");
});
$("#addButton").click(function() {
$("#buttonContainer").append('<button class="dynamicButton">クリックしてね</button>');
});
});
</script>
</body>
</html>
これをon
メソッドを使うようにすると、下記のようになります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>onメソッドで動的要素に対応</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="addButton">追加</button>
<div id="buttonContainer">
<button class="dynamicButton">クリックしてね</button>
</div>
<script>
$(document).ready(function() {
$("#buttonContainer").on("click", ".dynamicButton", function() {
alert("動的に追加されたボタンがクリックされました!");
});
$("#addButton").click(function() {
$("#buttonContainer").append('<button class="dynamicButton">クリックしてね</button>');
});
});
</script>
</body>
</html>
こうすると、追加された要素に対してもイベントが動作します。
実際に動かすと、on
メソッドを使った場合だと、下記のように追加されたボタンでも処理が動きました。
jQueryで設定したイベントを削除する
off
メソッドを使うことで、設定したイベントを削除することができます。
例えば、クリックイベントを削除するには以下のようにします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>イベント削除の例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="myButton">クリックしてね</button>
<button id="removeEvent">イベントを削除</button>
<script>
$(document).ready(function() {
function showAlert() {
alert("ボタンがクリックされました!");
}
$("#myButton").on("click", showAlert);
$("#removeEvent").on("click", function() {
$("#myButton").off("click", showAlert);
});
});
</script>
</body>
</html>
この例では、#myButton
に設定されたクリックイベントが、#removeEvent
ボタンをクリックすることで削除されます。
#myButton
に設定したshowAlert
関数を、#removeEvent
ボタンがクリックされたときにoff
メソッドで解除しています。
これにより、再度#myButton
をクリックしてもアラートが表示されなくなります。
実際に動かすと、下記のように削除した後はアラートが表示されませんでした。
jQueryですでに設定した要素にイベントを追加する
既存の要素に対して新たなイベントを追加する場合も、on
メソッドを使用します。
例えば、既存のボタンにホバーイベントを追加するには以下のようにします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>既存の要素にイベントを追加</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="myButton">クリックしてね</button>
<button id="addEvent">イベントを追加</button>
<script>
$(document).ready(function() {
$("#myButton").on("click", function() {
alert("ボタンがクリックされました!");
});
$("#addEvent").on("click", function() {
$("#myButton").on("mouseover", function() {
$(this).css("background-color", "yellow");
});
$("#myButton").on("mouseout", function() {
$(this).css("background-color", "");
});
});
});
</script>
</body>
</html>
この例では、#myButton
に対してクリックイベントとホバーイベントを追加しています。
このコードでは、まず#myButton
がクリックされたときにアラートを表示します。
そして、#addEvent
ボタンを押すとイベントが追加されます。
追加したイベントでは、マウスオーバー時にボタンの背景色を黄色に変え、マウスアウト時に元に戻すように設定しています。
実際に追加した後に下記のように、ホバーイベントが動いていることが確認できました。
jQueryでイベントを複数設定する
on
メソッドを使用すると、複数のイベントを同時に設定することができます。
以下の例では、クリックイベントとダブルクリックイベントを設定しています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>複数イベントの例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<button id="myButton">クリックしてね</button>
<script>
$(document).ready(function() {
$("#myButton").on({
click: function() {
console.log("ボタンをクリックしました");
},
dblclick: function() {
console.log("ボタンがダブルクリックされました!");
}
});
});
</script>
</body>
</html>
この例では、#myButton
に対してクリックイベントとダブルクリックイベントが設定されています。
このようにon
メソッドにオブジェクトを渡すことで、複数のイベントハンドラーを一度に設定可能です。
これにより、コードの可読性が向上し、メンテナンスもしやすくなるかと思います。
jQueryのイベント一覧
jQueryで指定できる、よく使いそうなイベントをまとめました。
イベント | イベントメソッド | on | 説明 |
---|---|---|---|
click | click() | ‘click’ | マウスクリックしたときに発生する |
dblclick | dblclick() | ‘dblclick’ | ダブルクリックしたときに発生する |
mouseover | mouseover() | ‘mouseover’ | マウスが要素に乗ったときに発生する |
mouseout | mouseout() | ‘mouseout’ | マウスが要素から離れたときに発生する |
keydown | keydown() | ‘keydown’ | キーが押されたときに発生する |
keyup | keyup() | ‘keyup’ | キーが離されたときに発生する |
submit | submit() | ‘submit’ | フォームが送信されたときに発生する |
change | change() | ‘change’ | フォーム要素の値が変更されたときに発生する |
focus | focus() | ‘focus’ | 要素がフォーカスされたときに発生する |
blur | blur() | ‘blur’ | 要素からフォーカスが外れたときに発生する |
jQueryのイベントについてまとめ
jQueryを使用することで、ユーザーの操作に対するイベントハンドリングが非常に簡単に行えます。
on
メソッドを使えば、複数のイベントを一度にバインドしたり、動的に生成された要素にもイベントを設定することができました。
また、off
メソッドを使えば、不要になったイベントを簡単に削除できました。
このようなイベントを使うことで、動的なWebフロントのページを作成することが可能です。
コメント