jQuery 「走査系のメソッド」 要素の集合から条件にマッチした要素を削除する

要素集合として渡されたjQueryオブジェクトから、条件に合致した要素を除外して新しい要素集合を生成します。条件として渡す引数は、セレクタでもDOM要素でも可です。jQuery1.4では、引数にクロージャが使えるようになりました。クロージャはjQueryオブジェクト内の各要素を順に検査し、動的に除外すべき要素を決定できます。なお、クロージャでは、現在検査中の要素を「$(this)」として参照できます。

書式

.not( セレクタ )
.not( 要素 )
.not( function(){ 処理… } )
$('li').not(':first')
$('li').not($('#myelem'))
$('li').not(function(){
  if($(this).index() == 3){
    return $(this);
  }
})

サンプル

セレクタとクロージャで特定した要素を除外する

<body>
  <div class="main">
    <div class="header">
      <h1> サンプル </h1>
    </div>
    <div class="content">
      <p class="sticky3">0番目のP</p> 
      <p class="sticky3">1番目のP</p>
      <p class="sticky3">2番目のP</p>
      <p class="sticky3">3番目のP</p>
      <button class="button" id="button1" type="button" name="button">>セレクタで除外</button>
      <button class="button" id="button2" type="button" name="button2">>クロージャで除外 </button>
    </div>
    <div class="footer">
      <hr>
      <p class="copyright">2019 xxxx all rights reserved.</p>
    </div>
  </div>
  <script>
    $(document).ready(function(){
      $('#button1').on('click', function() {
        $('.sticky3').not(':nth-child(3)').css('backgroundColor', 'red');
      });

      $('#button2').on('click', function() {
        $('.sticky3').not(function() {
          if ($(this).index() == 1) { 
            return $(this);
          }
        }).css('backgroundColor', 'red');
      });
    });
  </script>
</body>
実行結果
セレクタで除外ボタンをクリックした後
実行結果
クロージャで除外ボタンをクリックした後