使用 jQuery 移动 TinyMCE

The*_*Fox 5 html jquery clone tinymce insertafter

<textarea><ul>.

<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>
Run Code Online (Sandbox Code Playgroud)

“块内容”将使用$('.blockcontent').tinymce({...});.

如果我在#bc1 之后插入#bc3$('#bc3').insertAfter($('#bc1'));内容将被删除。#text3 文本区域的内容不再可用。它消失了。如何解决这个问题?

我还尝试克隆 #bc3 $('#bc3').clone(true, true),在 #bc1 之后插入克隆并删除原始的 #bc3。为了修复“jQuery Input Clone Bug”,我使用了jquery.fix.clone jQuery plugin。但是 clone 方法也有与 insertAfter 方法相同的问题。也许 insertAfter 也做同样的事情:克隆和删除。不知道,随便。如果我首先删除原始文件然后插入克隆,则 TinyMCE 在克隆中不可用,但克隆 textarea 的内容可用。如果我首先插入克隆然后删除原始内容,则 TinyMCE 可用但原始内容不可用。

Tha*_*ama 4

在 DOM 中移动tinymce 并不能像您希望的那样工作。在移动它之前,您需要调用mceRemoveControl,然后在移动编辑器源元素之后,您可以重新初始化编辑器。

克隆将产生相同的 ID。Tinymce 不允许相同的 id。最好确保您的源 html 元素具有唯一的 id(而不是没有)。

  • 好的,谢谢。这有效。在 `insertAfter` 之前,我执行 `tinyMCE.execCommand('mceRemoveControl', false, 'text3');`。在“insertAfter”之后,我为所有没有 TinyMCE 的文本区域重新初始化 TinyMCE。 (2认同)