Javascript 如何彻底摧毁tinymce?

Javascript 如何彻底摧毁tinymce?,javascript,tinymce,Javascript,Tinymce,我正在做这样的事情: 在网页上,有一篇文章包装在一个DIV中,一个编辑按钮。当用户单击Edit按钮时,通过javascript插入一个textarea,将DIV的html加载到textarea,加载并初始化tinymce。当用户单击Save按钮时,通过ajax保存和更新文章,并完全销毁tinymce 问题是,我没能摧毁tinymce。这是 我使用的是tinymce的jQuery版本,这是最新的V3.2.2 以下是示例代码: <html> <head>

我正在做这样的事情:

在网页上,有一篇文章包装在一个DIV中,一个编辑按钮。当用户单击Edit按钮时,通过javascript插入一个textarea,将DIV的html加载到textarea,加载并初始化tinymce。当用户单击Save按钮时,通过ajax保存和更新文章,并完全销毁tinymce

问题是,我没能摧毁tinymce。这是

我使用的是tinymce的jQuery版本,这是最新的V3.2.2

以下是示例代码:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script type="text/javascript" src="../js/tinymce/jquery.tinymce.js"></script>
        <script type="text/javascript">
            $(function() {
                $('button.load').click(loadTinyMCE);
                $('button.destory').click(destoryTinyMCE);
            });

            function loadTinyMCE() {
                $('textarea').tinymce({
                    script_url : '../js/tinymce/tiny_mce.js'
                });
            }

            function destoryTinyMCE() {
                $('textarea').tinymce().destroy();
            }
        </script>
    </head>
    <body>
        <textarea>abc</textarea>
        <button type="button" class="load">Load TinyMCE</button>
        <button type="button" class="destory">Destory TinyMCE</button>
    </body>
</html>

$(函数(){
$('button.load')。单击(loadTinyMCE);
$('button.destory')。单击(destoryTinyMCE);
});
函数loadTinyMCE(){
$('textarea').tinymce({
脚本_url:“../js/tinymce/tiny_mce.js”
});
}
函数destoryTinyMCE(){
$('textarea').tinymce().destroy();
}
abc
负载锡
破坏性锡矿

要“销毁”jquery中的元素,请使用
$(node).remove()
。如果这不起作用,一个代码示例将帮助我们更好地理解/回答您的问题。

请改用remove()。

您已经有了一个关于remove()的实用的公认解决方案,下面是关于destroy()的答案

Destroy方法(有时称为dispose)在许多编程语言中都很常见,它允许清理某个实例使用的资源。破坏通常是一个纯粹的记忆概念(即非视觉)。destroy方法通常不同于面向对象的析构函数方法,因为destroy允许程序员显式调用,以便在最终析构函数运行之前或垃圾收集器出现之前清理内存和资源(在任何一种情况下,你都可以更早地发布你不再需要的东西,而不是让这些资源一直使用到程序结束)。有时析构函数方法自然会包含对destroy方法的调用,以确保最终清理所有资源,因此程序员通常不必担心不调用它,因为它最终会被自动调用

通常,destroy方法代码体由程序员提供,用于特定于应用程序的行为(在某些语言中从基类/对象重写)。这意味着在没有提供实现的情况下调用destroy通常不会起任何作用-代码体为空。当然,对于TinyMCE,它会适当地实现自己的destroy方法

TinyMCE文档并没有承诺销毁后会有任何视觉上的变化,只是会消除实例内存泄漏的可能性。这与销毁方法通常的做法是一致的

通过以下方式销毁编辑器实例: 删除所有事件、元素 参考资料或其他资源 可能会泄漏内存。此方法将被禁用 当页面被打开时自动调用 卸载,但也可以调用它 如果你知道自己是什么,就直接说 做

这也是为什么TinyMCE提供了一个remove()方法来直观地更改内容,因为destroy()并不打算实现完全相同的目的


为了彻底销毁TinyMCE,您可以先发出remove()进行可视化清理,然后发出dispose()进行内存清理;但是这些方法是特定于实现的,我不确定TinyMCE会如何反应。

嗨,我的问题通过使用此方法得到解决

使用以下命令切换一个或多个TinyMCE实例:

$('.editors').tinymce('toggle')

或者完全使用以下方法删除实例:

$('.editors').tinymce('remove')


1.你能展示一下你没有完全销毁TinyMCE的代码吗?2.你为什么认为它只是隐藏的?它不仅仅是隐藏的。我只是编辑了这篇文章。很抱歉。你的代码表明你正在销毁TinyMCE。为什么你认为它没有被销毁?你如何定义“失败”:通过您在DOM中仍然看到的内容,或者可能是UI上的视觉内容?@jdk:调用destroy()不会发生任何事情。tinymce编辑器仍然存在。$('textarea')。tinymce().remove()按预期工作!不知道destroy()的用途是什么?啊..所以我想这样做更安全:函数destoryTinyMCE(){$('textarea')。tinymce().remove();$('textarea').tinymce().destroy();}但与调用remove()相比,我没有注意到内存变化单独使用。在多次调用init和remove之后,可能只有在某些浏览器中,在极少数情况下才会注意到内存泄漏。他说的是使用事件处理程序销毁TinyMCE实例,而不是删除DOM节点。