jQuery 「CSS操作」クラスの指定あり・指定なしを切り替える

.addClassメソッドはクラスを追加し、.removeClass()メソッドはクラスを削除するメソッドですが、.toggleClass()メソッドは、引数として渡したクラスが要素に指定されていなければ指定し、指定されていれば除去します。ただし、2番目の書式のように、第2引数のスィッチ(trueまたはfalse)を使って、指定したクラスの有効・無効を明示的に設定することもできます。jQuery1.4からは、クラス名の指定をクロージャで動的に生成できるようになりました。条件によって切り替えるクラス名を変化させられるので、非常に柔軟なスタイル指定が可能です。

書式

$( 対象要素 ).toggleClass('クラス名');
$( 対象要素 ).toggleClass('クラス名',スィッチ);
$( 対象要素 ).toggleClass(function(){処理・・・});
$('p').toggleClass('myClass');
$('p').toggleClass('myClass',true);
$('p').toggleClass(function(){
    if(x == y){
      return 'myClass';
    }else{
      return 'yourClass';
    }
});

サンプル

ボタンクリックでクラス指定の有効・無効を切り替える

<html>
      <head>
        <meta charset="UTF-8">
        <title>テストページ</title>
        <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <style>
          .btn{
            border: 1px solid;
            font-size:15px;
            background: #fff;
          }
          .bgcolor {
            background:#f0b8ff;
          }
        </style>
  </head>
  <body>
    <form>
      <input type="button" class="btn bgcolor" value="toggle!">
      <input type="button" class="btn" value="toggle!">
      <input type="button" class="btn" value="toggle!">
    </form>
    <script>
      $('.btn').on('click',function(){
        $(this).toggleClass('bgcolor');
       });
    </script>
    </body>  
</html>
実行結果
初期画面

サンプルでは、1つ目のボタンにはすでにbgcolorクラスが付与されている状態になるため、クリックすると.toggleClass()メソッドによってbgcolorクラスが外されます。

実行結果
toggle!ボタンをクリックした後