2010-04-18 331 views
7

我正在做这样的事情:如何完全摧毁tinymce?

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

问题是,我没能销毁tinymce。这里是the doc of the destroy method

我将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> 
+0

1.你能告诉你的,你不能完全摧毁TinyMCE的代码? 2.什么让你觉得它隐藏起来? – 2010-04-18 20:38:53

+0

它不只是隐藏。我只是编辑帖子。对不起。 – powerboy 2010-04-18 22:24:50

+0

你的代码表明你正在销毁TinyMCE。你为什么认为它没有被破坏?你如何定义“失败”:通过你在DOM中看到的东西仍然存在,或者可能是在UI上可视化的东西? – 2010-04-18 22:51:37

回答

9

使用remove()代替。

0

要 '消灭' 的元素在jQuery中,使用$(node).remove()。如果这不起作用,代码示例将帮助我们更好地理解/回答您的问题。

+1

他正在讨论销毁TinyMCE实例,事件处理程序和所有事件,而不是删除DOM节点。 – bjornl 2012-07-31 10:02:50

7

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

销毁方法(有时称为dispose)在许多编程语言中很常见,可以清理某些实例所使用的资源。销毁通常是纯粹的记忆概念(即非视觉)。 destroy方法通常与生命周期中面向对象的析构函数方法不同,因为销毁方式旨在允许程序员明确调用destroy方法,以便在最终析构函数运行之前或垃圾收集器出现之前清理内存和资源(无论是哪种情况,都可以在不再需要的情况下发布,而不是在程序结束之前使用这些资源)。有时析构函数方法自然会包含对destroy方法的调用,以确保最终清理任何资源,所以通常程序员不必担心不调用它,因为它最终会自动调用。

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

TinyMCE文档不会承诺在销毁时发生任何视觉变化,只是该实例将被剥夺内存泄漏可能性。这与销毁方法通常的做法是一致的。

由 销毁编辑器实例中移除所有事件,元素 引用或 可能泄漏内存等资源。此方法将在 卸载页面时自动调用 ,但如果您知道您在做什么 ,则也可以直接将其调用 。

这也是为什么TinyMCE提供remove()方法来直观地改变事物的原因,因为destroy()并不打算执行完全相同的目的。

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

+0

ahh .. 所以我想这样做更安全: function destoryTinyMCE(){('textarea')。tinymce()。remove(); $('textarea')。tinymce()。destroy(); } 但我注意到与单独调用remove()相比没有内存变化。也许内存泄漏可能会在调用init并重复删除多次后,在某些浏览器中极少出现。 – powerboy 2010-04-19 23:06:57

1

您好我的问题通过使用此

切换一个或多个TinyMCE的情况下,使用解决:

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

或完全使用删除实例:

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

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