从元素中删除jQuery插件

29

我有类似以下代码的东西:

$(a).click(function() {
  $(element).plugin();
});
有没有一种方法可以从元素中删除插件,而不是使用$($.plugin).remove()?不确定我是否使用了正确的术语,但基本上我想将该元素重置为其原始状态。 谢谢。

我非常确定这完全取决于插件。像jQuery UI对话框这样的东西会在您的元素周围包装各种垃圾并将其移动到DOM中的不同位置,因此“撤消”功能将非常具有挑战性。 - Pointy
好的,谢谢!顺便看了一下你的博客http://whatthepointy.blogspot.com/,但是发现找不到了... - Steven Cheng
3个回答

25

这是我的暴力解决方案:

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

完美的解决方案!我缺少了removeData()函数。 - Ilya Karnaukhov
但是请注意,removeData()将删除附加到元素的任何数据属性。如果您知道它正在附加哪些数据属性,则最好将它们删除。 - serdar.sanri

12

要撤销插件的影响,您需要了解插件的功能。很多插件将额外的元素、处理程序添加到DOM等。如果插件没有创建任何额外的元素,则可以尝试使用clone(不包括数据和事件)并替换或者仅取消绑定所有事件处理程序,但这并不总是有效的。这将非常依赖于具体的插件。


1
是的,我认为普遍共识是先看插件。干杯! - Steven Cheng

5

除非插件提供了该功能,否则很难做到。您需要调查插件的功能,并具体撤销这些操作 - 或存储非插件元素的克隆版本以便稍后替换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接