1

jQuery:

var a = $("<a href='#'>Click me</a>")
var d = $("div:first");
a.appendTo(d);
a.on("click",function(){
   if(prompt('enter password') === 'password'){
      $(d).remove();
   }
});

フィドル: http://jsfiddle.net/bujRr/


質問: は<a>もう存在しませんが、clickはまだバインドされていました。

  1. イベントバインディングは削除されましたか? エド<div>はいつ?.remove()
  2. そうでない場合、理論上の数百回の実行後にパフォーマンスの問題が発生する可能性はありますか?
  3. .off()事前に電話するべき.remove()ですか?


注: いいえ、実際には JS にパスワードを保存しているわけではありません。SSCCEを持つために、ajax 呼び出しと他のコードを削除しました。

4

2 に答える 2

3

ドキュメントイベントによると、同様に削除されます:http://api.jquery.com/remove/

.empty() と同様に、.remove() メソッドは DOM から要素を取り出します。要素自体とその中のすべてを削除する場合は、.remove() を使用します。要素自体に加えて、要素に関連付けられたすべてのバインドされたイベントと jQuery データが削除されます。データとイベントを削除せずに要素を削除するには、代わりに .detach() を使用します。

于 2013-08-23T12:44:38.240 に答える
2

イベントバインディングは削除されましたか? エド<div>はいつ?.remove()

はい、削除されたアイテム (またはその子) にバインドされたイベントは自動的に削除されます。

そうでない場合、理論上の数百回の実行後にパフォーマンスの問題が発生する可能性はありますか?

可能ですが、上記の理由により問題ありません

.off()事前に電話するべき.remove()ですか?

いいえ。

于 2013-08-23T12:44:50.023 に答える