CKEditor 4 と jQuery UI のソート可能なメソッドで問題が発生しました。ここで、CKEditor インスタンスを持つコンテナをソートすると、値が削除され、「Uncaught TypeError: 未定義のメソッド 'getSelection' を呼び出せません」というエラーがスローされます。また、エディターを編集できなくなります。ここで見つかった次のハックのいずれかを使用して、CKEditor 3 でこれを回避することができました 。
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 start:function (イベント,ui) { $('テキストエリア').each(関数(){ var id = $(this).attr('id'); tmpStore[id] = CKEDITOR.instances[id].getData(); })) }、 停止:関数(イベント、UI){ $('テキストエリア').each(関数(){ var id = $(this).attr('id'); CKEDITOR.instances[id].setData(tmpStore[id]); })) } }); $('テキストエリア').each(関数(){ var ckId = $(this).attr('id'); 構成 = {}; CKEDITOR.replace(ckId、構成); })) })) 李 { パディング: 10px; 幅: 800px; 高さ: 300px; } </head> <本体> <ul id="ソート可能"> <li><textarea id="test1" name="test1">テスト1</textarea></li> <li><textarea id="test2" name="test1">test2</textarea></li> <li><textarea id="test3" name="test1">test3</textarea></li> </ul> </body> </html>