質問: dom要素を削除しても、イベントは消えないのでしょうか? 恥ずかしながら、質問します。 (自分で調べろって言わないで) 例えば、 element.onclick=function(){ ------ } で作った匿名コールバック関数(?)は、そのelement を削除しても、残っていて、悪影響するんでしょうか、 element.onclick=(function(){ return function(){ ------ } })(); としても同様でしょうか?
回答: #2~4です。 #4のお礼より引用。 > でも、そんなに多量に追加・削除を繰り返しが想定さなければ、たぶん許されそうな.... まあ、そうですよね。 参照できないところにあるのですし、よほどメモリを圧迫していなければ問題は出そうにないですね。 ただ...。例えば、先の回答のように click を3つ定義する実装があったとして。 私なら、一つだけイベント定義しちゃいます。 document./*@cc_on @if(@_jscript) attachevent('on' + @else @*/addeventlistener(/*@end @*/ 'click', function (evt) { var targetnode = evt.target || evt.srcelement;// イベント呼び出し元の要素ノード switch(targetnode.id){ case 'hello': // 処理 break; case 'delete': // 処理 break; case 'view': // 処理 break; default: return false;// それ以外は処理を行わない } evt.preventdefault ? evt.preventdefault() : evt.returnvalue = false;// デフォルト動作を無効に },false); イベントそのものは一つなので、匿名関数内部で制御構造を工夫すれば特定条件下で処理を回避する事も簡単にできます。