0

On my current project I am implementing the jHtmlArea WYSIWYG plugin on some TEXTAREA's that are in rows that are draggable and sortable. The only problem is that once you begin dragging them they lose all the data that was in the IFRAME that the plugin masks over the associated TEXTAREA. jQuery's .clone feature is being used but on its own it doesn't carry all the data over with it and even setting it to .clone(true) or .clone(true, true) does not preserve the data on drag. Example:

http://jsfiddle.net/5QL7W/1/

Is there any way to preserve the content?

4

1 に答える 1

1

私はついにそれをここで理解したと思います:

http://jsfiddle.net/5QL7W/27/

ドラッグで消えたように見えるコンテンツが完全に消えたわけではなく、どこかに保存され(わからない)、ページのリロード/更新後にリッチテキストエディタのIFRAMEに表示されることに気付いた後、答えはゆっくりと出てきました(ページをリロードするとwhoのものが最初から始まるjsfiddleでは簡単に説明できないもの)。ついに気付いたら、jHtmlAreaプラグインの「破棄」機能(おそらく「破棄」という名前が付けられているはずです)を使用し、プラグインを即座に再初期化すると、データが再表示されます。クローンがドラッグされているDOM内の行を特定する方法(または少なくともそのjQueryオブジェクトを作成する方法)を理解できなかったため、すべてのTEXTAREAで破棄して再初期化しました。例についてはhttp://jsfiddle.net/5QL7W/24/ )。

関連コード:

var fixHelperModified = function (e, tr) {
    var $originals = tr.children();
    var $helper = tr.clone();
    $helper.children().each(function (index) {
        $(this).width($originals.eq(index).width())
    });
    return $helper;
},
updateIndex = function (e, ui) {
    $('td.index', ui.item.parent()).each(function (i) {
        $(this).html(i + 1);
    });
    $('#sort TBODY TEXTAREA').each(function () {
        $(this).htmlarea('dispose');
        $(this).htmlarea({
            toolbar: ["bold"]
        });
    });
};

$("#sort TBODY").sortable({
    helper: fixHelperModified,
    stop: updateIndex
});
于 2013-02-15T21:07:56.733 に答える