-5

jquery remove()メソッドとdetach()メソッドはどちらも同じように動作しているか、同じように機能しているため、区別できません。plzは次のコードを検討します。

 <script>
$(document).ready(function(){
$("#btn1").click(function(){
  $("body").append($("#p1").detach());
    });
  $("#btn2").click(function(){
  $("body").append($("#p2").remove());
    });
 $("p").click(function(){
    $(this).animate({fontSize:"+=1px"})
  });
});
</script>
4

4 に答える 4

1

ドキュメントから:

.detach() メソッドは、.detach() が削除された要素に関連付けられたすべての jQuery データを保持することを除いて、.remove() と同じです。このメソッドは、削除された要素を後で DOM に再挿入する場合に便利です。

remove()エレメントを完全に破壊します。detach()要素を削除し、そのデータはそのままにします。

于 2013-02-06T17:36:46.760 に答える
0

このdetachメソッドは、要素に関連付けられている内部 jQuery データ (イベント バインディングなど) を削除しないため、そのようなデータが存在する場合にのみ違いが見られます。

ドキュメント内のある場所から別の場所に要素を移動するには、要素を削除したり切り離したりする必要はなく、新しい場所に追加するだけです。

$("body").append($("#p1"));
于 2013-02-06T17:38:21.930 に答える
0

ドキュメントで説明されているように$.detach()、関連する jQuery データを保持し、$.remove()そのデータを削除します。このデータには、バインドされたイベント、アニメーション キュー、および で手動で追加したものが含まれます$.data()

元の例では、次のシナリオで違いに気付くはずです。

  1. 段落をクリックします。
  2. ボタンをクリックします。
  3. 段落をもう一度クリックします。

#p1との場合#btn1、段落を 2 回目にクリックすると、クリック ハンドラーがトリガーされ、フォント サイズが大きくなります。これは、イベント ハンドラがデータに格納され、 によって保持されるためdetach()です。したがって、ハンドラーを DOM に再アタッチしても、ハンドラーはバインドされたままです。

ただし#p2#btn2イベント ハンドラーは削除されremove()、段落を 2 回目にクリックしても何も起こりません。

補足: detach()DOM にすぐに再度追加する場合は、呼び出す必要はありません。detach()(同じデータと動作で) 再追加する必要があるまで、要素を変数にしばらく格納したい場合は興味深いかもしれません。remove()一般に、要素を破棄するだけでなく、関連するデータをクリーンアップするためにも使用されます。

于 2013-02-06T17:48:16.010 に答える
0

両者の間に目に見える違いは見られません。この抜粋は、jQuery のドキュメントから抜粋したものです。

.detach() メソッドは、.detach() が削除された要素に関連付けられたすべての jQuery データを保持することを除いて、.remove() と同じです。このメソッドは、削除された要素を後で DOM に再挿入する場合に便利です。

これらの各呼び出しについて、API ドキュメントを確認してください。

jQuery 削除

jQuery デタッチ

于 2013-02-06T17:38:53.313 に答える