作者fillano (冒牌費大公)
看板Ajax
標題Re: [問題] delete function object
時間Sat Feb 14 09:42:32 2009
嗯嗯,其實最好補充一點,是關於jQuery怎樣管理events(1.2.6版,1.3我還沒仔細看)
你用bind、click加上event時,你傳給他的匿名函數會存放在$.cache裡面,你可以用
firebug來觀察看看。
當使用$(node).html('alter content')或是$(node).load('url')等去更動node的時候,
如果有attach事件的node因此沒有了,jQuery會從$.cache把他移除。但是如果你是用像
document.getElementById('xxx').innerHTML = 'alter content';的方式去更動,
jQuery是不會去移除放在$.cache裡面的匿名函數的。所以使用jQuery的話,盡量所有動
做都用jQuery比較好,不然會有這類的leak。
--
Sapere Aude! 這就是啟蒙運動的口號!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.166.83
1F:推 sweetpotatoa:所以如果希望每個page在change之後自動把該page會使 02/14 10:33
2F:→ sweetpotatoa:用到的functions清掉的話是不是要使用匿名函式比較好 02/14 10:34
3F:→ sweetpotatoa:阿(全都使用)? 02/14 10:34
4F:→ fillano:你用bind、click等綁定事件處理函數時,jQuery會用這種方 02/15 13:49
5F:→ fillano:法來做管理啦,所以只要你都用jQuery做,就不會出問題。跟 02/15 13:49
6F:→ fillano:是不是用匿名函數沒有關係。dom的removeEventListener方法 02/15 13:52
7F:→ fillano:,需要使用跟add時用的同一個函數物件的reference,所以必 02/15 13:53
8F:→ fillano:需把這些事件函數存放在$.cache裡面,才有辦法移除。 02/15 13:53