我遇到了 CKEditor 4 和 jQuery UI 的可排序方法的问题,如果我对具有 CKEditor 实例的容器进行排序,它会删除该值并抛出错误“未捕获的类型错误:无法调用未定义的方法 'getSelection'”。它还使编辑器无法编辑。我能够在 CKEditor 3 中通过以下技巧之一解决这个问题: CKEditor freezes on jQuery UI Reorder
在查看 Chrome DOM 检查器时,似乎 iframe 的内容已被删除。
下面是粗略的测试代码:
<html> <头部> <title>测试</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script> <script src="ckeditor.js"></script> <script type="text/javascript"> $(函数(){ var tmpStore = {}; $('#sortable').sortable({ 光标:'移动', // 用于在 V3 上工作但不适用于 V4 的黑客: // https://stackoverflow.com/questions/3379653/ckeditor-freezes-on-jquery-ui-reorder 开始:函数(事件,ui){ $('textarea').each(function(){ var id = $(this).attr('id'); tmpStore[id] = CKEDITOR.instances[id].getData(); }) }, 停止:函数(事件,用户界面){ $('textarea').each(function(){ var id = $(this).attr('id'); CKEDITOR.instances[id].setData(tmpStore[id]); }) } }); $('textarea').each(function(){ var ckId = $(this).attr('id'); 配置 = {}; CKEDITOR.replace(ckId, 配置); }) }) li { 填充:10px; 宽度:800 像素;高度:300px;} </head> <正文> <ul id="可排序"> <li><textarea id="test1" name="test1">test1</textarea></li> <li><textarea id="test2" name="test1">test2</textarea></li> <li><textarea id="test3" name="test1">test3</textarea></li> </ul> </正文> </html>