考虑我有一个插件“fooPlugin”我将它附加到像$(element).fooPlugin();
这样的元素
但后来,我想停用该插件。如何停用插件?目前,我正在使用jwysiwyg插件
我正在使用jwysiwyg插件创建一个编辑器,我需要在单击按钮时启用编辑器,并在单击另一个按钮时删除编辑器
请帮忙!
答案 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")){
(并记得在最后用}}关闭大括号。
现在还有其他问题:插件没有真正停用,它仍会在触发时检查主体类,但至少它可能具有未绑定到指定元素的预期效果。