2010-10-06 33 views

回答

0

refresh/reload page. There's no other way.我對OP的帖子發表了評論。

但想到這一點,我認爲有一種方法。

在css部分,動畫正在style屬性上完成。刪除style屬性重置動畫中的元素。但請注意,如果您使用style屬性來設置元素的樣式,那麼該元素也將被刪除。

在綁定事件上,您可能想要綁定命名空間事件。例如,結合點擊會是這個樣子,

$('#someID').bind('click.toBeRemove', function(){...}) 

所以,取消事件很容易爲$('*').unbind('.toBeRemove')。留下其他原始事件(在本例中爲點擊事件)。

使用插件時,請使用那些具有.destroy()方法的方法,該方法將刪除元素上的功能和樣式。

但這不是100%肯定工作。只是一個理論。有這麼簡單的方法。 - 是的!沒有$(window).reset()會重置頁面而不重新加載。

+0

在給出「無法完成」的評論/回答之前,總是有一個好主意猶豫一下。 :o)那麼爲什麼事件的名稱空間? – user113716 2010-10-06 03:24:47

+0

以及我的目的,通過迭代每個元素來移除所有事件處理程序就足夠了。謝謝你的回答。 – KJW 2010-10-07 23:44:41

2

好的,這裏有一個解決方案 - 在你做任何事情之前捕獲一個body的克隆,然後當你需要重置時,用這個克隆替換整個body

var original = $('body').clone(); 

$('#reset').click(function() { 
    $('body').replaceWith(original); 
}); 

當然,這不會撤消你做其他地方,任何改變,例如在head,但它仍然比你有其他選項稍微好一點吧?

請參見:http://jsfiddle.net/uevrM/

編輯:剛剛意識到,這也不會殺了與livedelegate創建的任何事件處理程序。所以,不,這不是100%乾淨。

+0

+1,因爲它該死。 – 2010-10-06 04:03:24

+0

它應該照顧'.delegate()'處理程序,因爲它們不會再被觸發,因爲它們被連接到它們各自的容器。它沒有做的是清除jQuery存儲的任何數據/事件處理程序。它只是將它與元素分離,所以你仍然想要刪除這些數據。儘管如此,它可能與'delete jQuery.cache'一樣簡單。 – user113716 2010-10-06 04:09:56

相關問題