2013-02-05 60 views
0

在我當前的項目中,我在某些TEXTAREA's上實現了jHtmlArea所見即所得插件,這些插件可拖動且可排序。唯一的問題是,一旦你開始拖動它們,他們會丟失IFRAME中插件屏蔽相關聯的​​3210的所有數據。 jQuery的.clone功能正在使用,但它自己並不承載所有數據,甚至將其設置爲.clone(true).clone(true, true)不保留拖動的數據。例如:通過拖拽保存IFRAME內容

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

有沒有辦法保存的內容?

+0

這裏有一個更新的「小提琴」嘗試使用一些幫助從http://stackoverflow.com/questions/1595645/jquery-iframefix-on-a-sortable/3563096#comment20752056_3563096 : http://jsfiddle.net/5QL7W/6/ –

+0

它現在工作好多了,只是現在數據的成功重新加載是隨機的: http://jsfiddle.net/5QL7W/24/ –

回答

1

我想,我終於想通弄明白了,在這裏:

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

後,我意識到,要在阻力並沒有完全消失的消失,似乎內容,但被保存在某個地方,答案慢慢地(其中我不知道),並會在頁面重新加載/刷新後出現在富文本編輯器的IFRAME中(無法在jsfiddle中重新加載頁面時從頭開始說明誰的事情)。一旦我終於意識到,那麼我使用jHtmlArea插件的「dispose」功能(我認爲它們應該有可能命名爲「destroy」),然後立即重新初始化插件,然後數據將重新出現。由於我無法弄清楚如何識別DOM中有一個被拖動的克隆(或者至少是如何創建它的jQuery對象)的行,我在所有TEXTAREA上進行了處理並重新初始化,然後找到當我使用.each()方法定位每一個時,它最有效,否則有時候它們中的一些不會被處置然後重新初始化(參見前面提到的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 
});