Re: [問題] delete function object

看板Ajax作者 (冒牌費大公)時間16年前 (2009/02/14 09:42), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串3/3 (看更多)
嗯嗯,其實最好補充一點,是關於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

02/14 10:33, , 1F
所以如果希望每個page在change之後自動把該page會使
02/14 10:33, 1F

02/14 10:34, , 2F
用到的functions清掉的話是不是要使用匿名函式比較好
02/14 10:34, 2F

02/14 10:34, , 3F
阿(全都使用)?
02/14 10:34, 3F

02/15 13:49, , 4F
你用bind、click等綁定事件處理函數時,jQuery會用這種方
02/15 13:49, 4F

02/15 13:49, , 5F
法來做管理啦,所以只要你都用jQuery做,就不會出問題。跟
02/15 13:49, 5F

02/15 13:52, , 6F
是不是用匿名函數沒有關係。dom的removeEventListener方法
02/15 13:52, 6F

02/15 13:53, , 7F
,需要使用跟add時用的同一個函數物件的reference,所以必
02/15 13:53, 7F

02/15 13:53, , 8F
需把這些事件函數存放在$.cache裡面,才有辦法移除。
02/15 13:53, 8F
文章代碼(AID): #19bY6B5W (Ajax)
文章代碼(AID): #19bY6B5W (Ajax)