2010-04-18 283 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