Jquery onを使ってイベントをbindしたイベントを削除する

Jquery onを使ってイベントをbindしたイベントを削除する

Jqueryでonメソッドを使ってイベントをbind(バインド)したイベントをoffメソッドを利用して削除するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43

※windows10にApacheのインストールはこちら

offメソッド利用

指定した要素にクリックイベントをバインドしたのちに、そのイベントをoffメソッドで削除します。
ここでは要素をクリックして、文字の色を変更させるクリックイベントを作成して、削除してます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>mebeeサンプル</title>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
  <link rel="stylesheet" href="https://unpkg.com/bootstrap-material-design@4.1.1/dist/css/bootstrap-material-design.min.css" integrity="sha384-wXznGJNEXNG1NFsbm0ugrLFMQPWswR3lds2VeinahP8N0zJw9VWSopbjv2x7WCvX" crossorigin="anonymous">
  <script src="http://code.jquery.com/jquery-3.5.1.min.js"></script>  
</head>
<style>
.container {
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 50px;
}
</style>
<script>
  $(function(){    
    //クリックイベントをバインド
    $('#test').on("click", function(){
      //赤なら黒に変更
      if($("#test").css("color")=="red" || $("#test").css("color")=="rgb(255, 0, 0)" || $("#test").css("color")=="rgb(255,0,0)" || $("#test").css("color")=="#FF0000"){
        $("#test").css("color","black");
      }
      else{
        $("#test").css("color","red");
      }
    });

    $('#btn').click(function(){
      //バインドしたクリックイベントを削除する
      $('#test').off("click");      
    });
    
  });
</script>
<body>
  <div class="container">
    <div id="test">click me</div>
    <div>
      <button type="button" id="btn" class="btn btn-raised btn-warning">イベント削除</button>
    </div>
  </div>
</body>

</html>

要素をクリックすると文字色が変更されて、削除したあとはクリックしてもバインドが削除されているので変化しません。