jQuery 「detach」要素を一時的に削除する

.detach()メソッドは.remove()メソッドと同様に条件にマッチした要素をDOMから削除しますが、remove()が要素に関連するイベントハンドラやデータも一緒に削除するだけなのに対して、.detach()は削除した要素を保存しておいて、後でまたDOMに追加できます。

書式

$( 対象要素 ).detach( セレクタ );
var tmpElem = $('h1').detach();

サンプル

「消す」ボタンでコンテンツを一時的に削除、「復活」ボタンで付箋の最後に戻す

<body>
  <style>
    .sticky {
      background: #aaa;
    }
  </style>
    <div class="main">
      <div class="header">
        <h1>サンプル</h1>
      </div>
      <div class="content">
        <div class="sticky">
          <p>鮭おにぎり</p>
        </div>
        <div class="sticky">
          <p>のりおにぎり</p>
        </div>
        <div class="sticky">
          <p>梅干しおにぎり</p>
        </div>
        <div class="sticky">
          <p>タラコおにぎり</p>
        </div>
        <button class="button" id="detach" type="button">消す</button>
        <button class="button" id='restore' type="button">消した付箋を復活</button>
      </div>
      <div class="footer">
        <hr>
        <p class="copyright">2024 xxx all rights reserved.</p>
      </div>
    </div>
    <script>
      $(document).ready(function(){
        $('#detach').on('click',function(){
          tmp = $('.sticky:first').detach();
        });
        $('#restore').on('click',function(){
          tmp.insertAfter('.sticky:last');
        });
      });
    </script>
</body>
実行結果
初期画面
実行結果
「消す」ボタンをクリックした後
実行結果
「消した付箋を復活」ボタンをクリックした後