2010-07-08 95 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