0

在我当前的项目中,我正在一些TEXTAREA's可拖动和可排序的行中实现 jHtmlArea WYSIWYG 插件。唯一的问题是,一旦您开始拖动它们,它们就会丢失IFRAME插件掩盖关联的TEXTAREA. jQuery 的.clone功能正在被使用,但它本身并不会携带所有数据,甚至将其设置为.clone(true).clone(true, true)不保留拖动数据。例子:

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

有什么方法可以保存内容吗?

4

1 回答 1

1

我想我终于在这里弄清楚了:

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

在我意识到似乎在拖动时消失的内容并没有完全消失而是存储在某个地方(我不知道)并且会在页面重新加载/刷新后重新出现在富文本编辑器的 IFRAME 之后,答案才慢慢出现(无法在 jsfiddle 中轻松说明的东西,其中重新加载页面会从头开始)。一旦我终于意识到,然后我使用了 jHtmlArea 插件的“dispose”功能(我认为他们应该将其命名为“destroy”),然后立即重新初始化插件,然后数据将重新出现。由于我无法弄清楚如何识别 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 回答