2010-04-18 25 views
7

Estoy trabajando en algo como esto:Cómo destruir tinymce por completo?

En una página web, hay un artículo envuelto en un DIV, un botón Editar. Cuando un usuario hace clic en el botón Editar, inserte un área de texto a través de javascript, cargue el html del DIV en el área de texto, cargue y coloque el número inicial. Cuando el usuario haga clic en el botón Guardar, guarde y actualice el artículo mediante ajax, y destruya tinymce por completo.

El problema es que no pude destruir tinymce. Aquí está the doc of the destroy method.

estoy usando la versión de jQuery de tinymce, la V3.2.2 lastest

Aquí es el código de ejemplo:

<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. ¿Puede usted mostrar su código para cuando usted no puede destruir por completo TinyMCE? 2. ¿Qué te hace pensar que está escondido? –

+0

No solo está oculto. Solo edito la publicación. Lo siento por eso. – powerboy

+0

Tu código indica que estás destruyendo TinyMCE. ¿Por qué crees que no está destruido? ¿Cómo se define "falla": por algo que se ve presente en el DOM todavía, o tal vez algo visualmente en la interfaz de usuario? –

Respuesta

9

Use remove() en su lugar.

0

Para 'destruir' un elemento en jQuery, utilice $(node).remove(). Si esto no funciona, un ejemplo de código nos ayudará a comprender/responder mejor a su pregunta.

+1

Habla de la destrucción de la instancia TinyMCE, con controladores de eventos y todo, sin eliminar un nodo DOM. – bjornl

7

Ya tiene una solución práctica aceptada con remove() así que aquí hay una respuesta sobre destroy().

Los métodos de destrucción (a veces denominados dispose) son comunes en muchos lenguajes de programación para permitir la limpieza de los recursos utilizados por una instancia de algo. Destruir es convencionalmente un concepto de memoria pura (es decir, no visual). El método de destrucción es a menudo diferente de un método destructor orientado a objetos por duración en que el programador debe permitir explícitamente la destrucción para limpiar la memoria y los recursos antes de que se ejecute el destructor final o antes de que el recolector de basura aparezca. (en cualquier caso anterior, para que pueda liberar cosas cuando ya no las necesite en lugar de dejar que esos recursos se usen hasta el final del programa). A veces, el método destructor contendrá de forma natural una llamada al método de destrucción, para garantizar que todos los recursos se limpien finalmente, por lo que el programador no tiene que preocuparse por no llamar porque se llamará automáticamente.

A menudo el programador proporciona el cuerpo del código de método de destrucción para el comportamiento específico de la aplicación (anulado desde la clase/objeto base en algunos idiomas). Esto significa que llamar a destroy sin haberle proporcionado una implementación a menudo no hará nada: un cuerpo de código vacío. Por supuesto, para TinyMCE habrá implementado sus propios métodos de destrucción de forma apropiada.

La documentación de TinyMCE no promete ningún cambio visual después de la destrucción, solo que la instancia se despojará de las posibilidades de pérdida de memoria. Esto está en línea con lo que comúnmente destruyen los métodos.

destruye la instancia del editor por eliminación de todos los eventos, elemento referencias u otros recursos que podría perder memoria. Este método será llamado automáticamente cuando la página está descargada pero también puede llamarlo directamente si sabe lo que está haciendo .

Este es también el motivo por el cual TinyMCE proporciona un método remove() para cambiar visualmente las cosas, porque destroy() no está destinado a llevar a cabo el mismo propósito.

Para destruir TinyMCE por completo, puede ejecutar remove() para la limpieza visual seguido de desechar() para la limpieza de la memoria; sin embargo, esos métodos son específicos de la implementación y no estoy seguro de cómo reaccionaría TinyMCE.

+0

ahh .. Así que supongo que es más seguro hacerlo así: función destoryTinyMCE() { $ ('textarea'). Tinymce(). Remove(); $ ('textarea'). Tinymce(). Destroy(); } Pero noté que no hubo cambios en la memoria en comparación con llamar a quitar() solo. Quizás la pérdida de memoria se vuelva notable solo en casos excepcionales en ciertos navegadores después de llamar a init y eliminarlos repetitivamente varias veces. – powerboy

1

hola mi problema se resuelve mediante el uso de esta

Toggle uno o muchos casos TinyMCE usando:

$ tinymce ('alternar '); (' editores.').

O eliminar instancias enteramente usando:

$ tinymce ('eliminar '); (' editores.').

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