【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

【jQuery】要素を削除してもイベント情報は残す方法(detach)

本記事では、jQueryで要素を削除してもデータやイベント情報は残すことができるdetachメソッドの使い方とremoveメソッドとの違いについて解説しています。

JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
総合評価
( 5 )
メリット
  • 誰でも分かるように嚙み砕いて説明してくれる
  • アニメーションの知識が深く学べる
  • 1つのWebサイトを作りながら学べる
楽天ブックス
¥2,794 (2024/04/28 02:24時点 | 楽天市場調べ)
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次

detachメソッドでイベント情報を残す

jQueryで対象要素を削除する方法と言えば、removeメソッドが有名です。しかし、removeメソッドで削除された要素は関連付いているデータやイベントも一緒に削除します。そのため、removeメソッドで削除された要素を復元して再利用しようとしても、削除前に関連付いていたデータは全て消えてしまうため再利用することは難しいです。

このような一度削除はするけど、後々復元して再利用するかもしれない!という場面ではremoveメソッドではなくdetachメソッドを使います。detachメソッドでは、削除した要素に関連付いてるデータやイベント情報は消えずに残ります。

detachメソッドの使い方は以下のとおりです。

$("対象要素").detach();

使い方はremoveメソッドと同じで、削除したい対象の要素に対してdetachメソッドを使います。

detachメソッドで削除した要素を復元しイベント情報が残っているか確認できるサンプルコードは以下のとおりです。

<div>
  <div class="box box1">BOX1</div>
  <div class="box box2">BOX2</div>
  <div class="box box3">BOX3</div>
</div>
<button id="del">BOXを削除する</button>
<button id="res">BOXの復元</button>
<div id="ape"></div>
div{
  display:flex;
}

.box {
  display:flex;
  justify-content: center;
  align-items: center;
  width:150px;
  height:150px;
  font-weight:bold;
  cursor:pointer;
}

.box + .box{
  margin-left:15px;
}

.box1{
  background:#f00;
}

.box2{
  background:#0f0;
}

.box3{
  background:#00f;
}
let eventElem;
$("#del").on("click",function(){
  eventElem = $(".box").detach();
});

$("#res").on("click",function(){
  $("#ape").append(eventElem);
});

$(".box").on("click",function(){
  $(this).text("イベント実行!")
});

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次