JavaScript

jQueryのoff()を使ってon()イベントを削除する方法

この記事では、jQueryのクリックイベントを「$().on(‘click’, ~)」で設定し、不要になったときに「$().off()」を使用して削除する方法を解説します。
ボタンをクリックするたびに意図せずイベントが積み重なってしまうことを防ぐための基本的な対策方法です。これを理解することで、より安定したインタラクティブなWebページを作成できるようになります。

jQueryのoff()を使ってon()イベントを削除するCSSの記述

まず、動作確認のためのボタン(.tagutuika)にデザインを適用しましょう。以下のCSSコードは、クリックボタンに見た目を追加するための記述です。必要に応じて変更してください。

<style type="text/css">
body{
  font-family:Verdana,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W6",Osaka,"MS Pゴシック",Arial,sans-serif;
  padding: 0;
  margin: 0;
  overflow-x: hidden;
  line-height: 1.8em;
  text-align: center;
}
h1{
  font-size:16px;
  text-align:center;
  font-weight:normal;
  padding:10px 0;
  position: relative;
}
.tagutuika{
  padding: 4px;
  width: 400px;
  margin: 0 auto 16px auto;
  cursor: pointer;
  background-color: #cccccc;
}
.addclk{
  padding: 4px;
  width: 450px;
  margin: 0 auto 16px auto;
  cursor: pointer;
  background-color: #4DA6FF;
}
</style>
  • .tagutuika:クリックボタンのスタイル設定。背景色を灰色にして、中央配置します。
  • .addclk:クリックエリアを追加するボタンのデザインで、青色の背景を指定しています。

jQueryのoff()を使ってon()イベントを削除するHTMLの記述

次に、HTML部分のコードを示します。このコードでは、「.tagutuika」ボタンをクリックすることで「.addarea」に新しい要素が追加されるように設定しています。

<h1>以下のグレー箇所をクリックするとその下にon('click'~ クリックイベントを設定したタグ要素が追加されます。</h1>

<div class="tagutuika">ココをクリックすると、↓にクリックエリアが追加されます。</div>

<div class="addarea"></div>
  • class=”tagutuika”:クリックすると要素が追加されるボタンです。
  • class=”addarea”:クリックイベントで追加される要素が挿入される場所です。

on()クリックイベントをoff()を使って削除するJavaScript記述

次にJavaScriptのコードです。まず、jquery-2.2.0.min.jsファイルを読み込みます。
「.tagutuika」をクリックするたびに、on(‘click’~で追加されたイベントが積み重ならないよう、off()で一度クリックイベントを削除してから再設定する仕組みです。

<script src="./jquery-2.2.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $(".tagutuika").click(function(){

    $(".addarea").html('<div class="addclk">この追加エリアをクリックするとalertメッセージが表示されます。</div>');

    $('body').off();  //off()で↓のクリックイベントを削除

    $("body").on('click', '.addclk', function(){
      alert("追加されたエリアがclickされました!");
    });

  });
</script>
  • .tagutuika:このクラスを持つ要素をクリックすると、追加エリアが出現します。
  • .addarea:クリックイベントで追加する要素を配置するエリアです。
  • off():クリックイベントが積み重ならないよう、一度すべてのクリックイベントを解除しています。

「off()」を使うことで、ユーザーが「.tagutuika」を複数回クリックしても、不要なイベントが追加されるのを防ぐことができます。例えば、off()をしない場合、クリックするたびにalertが複数回表示される問題が発生する可能性があります。

jQueryのoff()を使ってon()イベント削除するデモページ

実際にこの機能がどのように動作するのかを確認するために、以下のデモページで動作を確かめてみてください。具体的な操作方法を通して、理解を深めることができるでしょう。

jQueryのoff()を使ってon()イベント削除するデモページ

まとめ

jQueryの「off()」を活用することで、重複したイベント発火を防ぐことができます。

 
※流用される場合は自己責任でお願いします。
 デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。