jquery停用插件

时间:2010-07-18 16:56:23

标签: jquery plugins

考虑我有一个插件“fooPlugin”我将它附加到像$(element).fooPlugin();这样的元素 但后来,我想停用该插件。如何停用插件?目前,我正在使用jwysiwyg插件

我正在使用jwysiwyg插件创建一个编辑器,我需要在单击按钮时启用编辑器,并在单击另一个按钮时删除编辑器

请帮忙!

4 个答案:

答案 0 :(得分:1)

没有一个通用的方法来分离插件,谁知道插件可能对节点做了什么,所以只有那个插件才能自行分离。

$(element).fooPlugin() //add
$(element).removeFooPlugin() //remove

请参阅jwysiwyg文档或询问它们,看起来他们没有实现任何销毁或删除方法。

答案 1 :(得分:0)

我认为你不会找到适用于所有插件的通用“停用”技术。 jwysiwyg可能会将事件处理程序附加到$(element),并且需要实现自己的“deactivate”方法。否则,您可以打开源并查看它附加的哪些处理程序,然后手动删除它们。

答案 2 :(得分:0)

我没有专门查看插件,但插件通常做的是修改标记,然后将事件监听器附加到它。

例如,内容编辑器可能会创建一些按钮,如“粗体”,“斜体”等,然后将单击事件附加到每个按钮。只需单击一下,它就会将[b] ... [/ b]添加到textarea中,例如也可以通过定义的标记给出。

然后,您可以执行的“停用”此插件的方法是重置标记。为此,首先使用jquery remove函数删除已创建的所有标记(它应该放在容器中,以便它应该简单快捷),然后再次附加从头开始所需的标记。此标记不会受到先前创建的任何侦听器的影响。

答案 3 :(得分:0)

正如其他人所提到的,没有一种标准的方法可以做到这一点,因为插件可以做各种事情(并且所有插件都不同)。您需要编辑插件。

我遇到过同样的问题,发现这适用于非常简单的插件:

给body元素一个类,例如“.pluginActivated”。编辑插件,以便在它执行任何操作之前,检查主体是否具有该类。

现在你可以从正文中删除.pluginActivated类,插件将有希望停止处理该元素。

e.g。该插件可能以

开头
return this.each(function(){

只需在插件开始执行您要“停用”的内容的任何代码之前直接添加if函数:

if ($("body").hasClass("pluginActivated")){

(并记得在最后用}}关闭大括号。

现在还有其他问题:插件没有真正停用,它仍会在触发时检查主体类,但至少它可能具有未绑定到指定元素的预期效果。