解除绑定 - 移除 - 终止一个jQuery插件

19

有没有一种方法可以从 jQuery 选择器中“解绑”一个 jQuery 插件?


这取决于插件。 - jantimon
所以没有原生的jQuery函数。这很糟糕... - tsiokos
@fuSi0N - 这不错,这取决于插件,jQuery核心并没有执行您想要反转的任何效果...您得到的插件执行了。如果您包含了使用的插件,可能有一种方法可以将其反转。如果没有,那么这真的是插件的问题。 - Nick Craver
我不知道jQuery如何预测每个插件会做什么。一个解决方案可能是缓存元素的预插件.clone(),如果需要的话可以还原回去(假设插件没有“撤销”功能)。 - user113716
@Nick 我需要禁用并重新启用一个输入框的AutoSuggest jQuery插件。http://code.drewwilson.com/entry/autosuggest-jquery-plugin - tsiokos
3个回答

12

您可以使用delete命令从jQuery原型对象中解除插件名称的绑定:

delete $.fn.pluginName;

不过,这不会影响已经初始化的插件实例。


那么在初始化后,我们如何解除插件的绑定? - tsiokos
9
插件通常提供一种自我销毁的方法,例如,如果你查看 jQuery UI,它们提供了 "destroy" 方法,这样你就可以执行类似于 $('selector').sortable('destroy'); 的操作。但是,并没有统一的方法来做到这一点,因为插件必须运行特定的代码来清理自身,而 jQuery 无法代替完成这个过程。 - reko_t

5

通常不行。

插件通常会对应用它的元素进行更改。有时,只需删除属性或解除插件添加的事件即可撤消更改,但插件需要提供此功能,或者您必须知道要删除的内容。

有时,插件会覆盖信息,以至于您无法在不知道插件应用前的信息的情况下撤消更改。


2
$("#selector").unbind().removeData(); 

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