2010-07-08 93 views
26

我有類似於下面的代碼的東西:的jQuery插件刪除從元素

$(a).click(function() { 
    $(element).plugin(); 
}); 

有沒有辦法從比使用$($.plugin).remove()之外的元素移除插件?不知道我是否擁有正確的術語,但基本上我想將元素重置爲原始狀態。

感謝

+0

我敢肯定,這將完全取決於插件。像jQuery UI對話框這樣的東西包裹着元素周圍的各種垃圾,並將其移動到DOM中的不同位置,因此「撤消」功能將非常具有挑戰性。 – Pointy 2010-07-08 16:39:43

+0

好的,謝謝!順便說一句,有一個在你的博客http://whatthepointy.blogspot.com/快速甘德並說,它不能被發現... – 2010-07-08 16:48:31

回答

12

你必須知道插件爲了扭轉它的效果。許多插件爲DOM添加額外的元素,處理元素等。如果插件沒有創建任何額外的元素,您可以簡單地執行clone(沒有數據和事件)並替換或甚至只是unbind所有事件處理程序,但這並不總是有效。這將非常依賴於該插件。

+1

是的,我認爲普遍的共識是先看看插件。歡呼 – 2010-07-08 16:50:46

4

除非該插件提供的功能,它可能不能這樣做,很容易。你必須調查插件的功能,特別是撤銷這些東西 - 或者存儲未插入元素的克隆,以便稍後替換它。

+0

謝謝,我會看看插件正在做更詳細.. – 2010-07-08 16:49:54

15

這裏是我的骯髒的解決方案:

$('#myWidget,#myWidget *').unbind().removeData(); 
+2

這工作完美.. – 2016-05-03 11:45:27

+0

完美的解決方案!我錯過了removeData()函數。 – 2017-04-11 13:33:01

+0

,但也要注意,removeData()將刪除附加到該元素的任何數據屬性。如果您知道它所附帶的數據道具,最好將它們刪除。 – 2017-08-03 20:49:00