如何完全破坏tinymce?

时间:2010-04-18 20:35:57

标签: javascript tinymce

我正在做这样的事情:

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

问题是,我没能破坏tinymce。这是the doc of the destroy method

我使用的是最新的V3.2.2

的jQuery版本的tinymce

以下是示例代码:

<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>

4 个答案:

答案 0 :(得分:9)

改为使用remove()。

答案 1 :(得分:7)

你已经有了一个实用的解决方案,带有remove()所以这里是关于destroy()的答案。

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

通常,破坏方法代码体由程序员提供,用于特定于应用程序的行为(在某些语言中从基类/对象中重写)。这意味着在没有为它提供实现的情况下调用destroy通常什么都不做 - 一个空的代码体。当然对于TinyMCE,它将适当地实现自己的销毁方法。

TinyMCE文档不会在销毁时承诺任何视觉上的更改,只是实例将被剥夺内存泄漏的可能性。这与通常的破坏方法一致。

  

通过破坏编辑器实例   删除所有事件,元素   参考或其他资源   可能泄漏记忆。这个方法会   页面自动调用   卸载但你也可以调用它   直接,如果你知道你是什么   做。

这也是为什么TinyMCE提供了一个remove()方法来直观地改变东西的原因,因为destroy()并不是为了实现完全相同的目的。

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

答案 2 :(得分:1)

您的问题通过使用此

解决了

使用以下方法切换一个或多个TinyMCE实例:

$( '编辑 ')TinyMCE的(' 切换');

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

$( '编辑 ')TinyMCE的(' 删除');

http://mktgdept.com/jquery-tinymce-plugin

答案 3 :(得分:0)

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