2012-03-02 4 views
4

У меня есть 2 (или более) <textarea> s с TinyMCE-3.4.8-jQuery в <ul>.Переместить TinyMCE с jQuery

<ul id="content"> 
<li id="bc1"><textarea id="text1" class="blockcontent"></textarea></li> 
<li id="bc2"><textarea id="text2" class="blockcontent"></textarea></li> 
<li id="bc3"><textarea id="text3" class="blockcontent"></textarea></li> 
</ul> 

"Блокировать содержимое" будет инициализирован с $('.blockcontent').tinymce({...});.

Если я вставляю # bc3 после # bc1 с $('#bc3').insertAfter($('#bc1'));, содержимое будет удалено. Содержимое текстового поля # text3 больше не доступно. Он ушел. Как это исправить?

Я также попытался клонировать # bc3 $('#bc3').clone(true, true), вставить клон после # bc1 и удалить оригинал # bc3. Чтобы исправить ошибку jQuery Input Clone Bug, я использовал jquery.fix.clone jQuery plugin. Но метод clone также имеет ту же проблему, что и метод insertAfter. Возможно, insertAfter делает то же самое: клонировать и удалять. Не знаю, что угодно. Если я сначала удалю оригинал, а затем вставлю клон, TinyMCE не будет доступен в клоне, но будет доступно содержимое клонированной текстовой области. Если я сначала вставляю клон, а затем удаляю оригинал, доступный TinyMCE, но не исходный контент.

Br

ответ

4

Перемещение TinyMCE вокруг в DOM не работает, как вы хотели бы, чтобы здесь. Перед тем, как переместить его, вам нужно позвонить mceRemoveControl, а затем после перемещения исходного элемента редактора вы можете повторно инициализировать редактор.

Клонирование даст идентичные идентификаторы. Tinymce не допускает идентичных идентификаторов. Лучше убедитесь, что у ваших исходных элементов html есть уникальный идентификатор (не один).

+1

Ok, thx. Это работает. Перед 'insertAfter' я выполняю' tinyMCE.execCommand ('mceRemoveControl', false, 'text3'); '. А после 'insertAfter' я повторно инициализую TinyMCE для всех текстовых областей без TinyMCE. – TheFox