Jquery拖放复制单元格内容而不是移动它

时间:2013-04-15 19:26:11

标签: jquery cell draggable droppable

我有两张桌子:

  • 表1包含可以复制到表2中任何位置的静态数据。
  • 表2可以通过从表1中复制的数据或通过此表中的移动数据进行更新。

一切正常,除了移动。我拖放时复制内容。

有人知道吗?

您可以在这里查看online sample

1 个答案:

答案 0 :(得分:0)

我通过解决方法解决了这个问题。我现在只是删除原始TD的内容。我添加了一个额外的桌子作为垃圾桶。

在线示例会做它应该做的一切。但是,我不确定这是否是最有效的方法。如果谈到jquery,我相当缺乏经验。

因此,如果有人有更优雅的解决方案做同样的事情,我非常愿意学习:)

以防万一,这是我使用的JQ代码:

jQuery(function($) {
var td1 = $("#table1 td");
var td2 = $("#table2 td");
var bin = $("#trash td");

td1.draggable({
    cursor: "move",
    appendTo: "body",
    helper: "clone",
    opacity: "0.5",
    revert: "invalid"
});

td2.draggable({
    cursor: "move",
    appendTo: "body",
    helper: "clone",
    opacity: "0.5",
    revert: "invalid"
});

td2.droppable({
    accept: 'td',
    tolerance: "pointer",
    drop: function (event, ui) {
        // check from which table we are dragging
        var fromTable = $(ui.draggable).closest("table").attr("id");
        // check from which td we are dragging
        var fromTD = $(ui.draggable).attr("id");
        // get the inner html content for the td we are dragging the div from 
        var cell = $(ui.draggable).html();
        // insert the complete html content into the target drop cell
        $(this).html(cell);
        // for purposes of result logging / debugging
        var location = $(this).attr('id');
        $('#result').html('Moved '+cell+'<br>From '+fromTable+' / '+fromTD+' (table / td)<br>To cell: '+location+'<br>complete with containing DIV');
        // in case we moved cell content within table2, remove the original content
        if(fromTable == "table2"){
            $(ui.draggable).html('<div></div>');
        }
    }
});

bin.droppable({
    accept: 'td',
    tolerance: "pointer",
    drop: function (event, ui) {
        // check if we are dragging from table 2 
        var fromTable = $(ui.draggable).closest("table").attr("id");
        if(fromTable != "table2"){
            $('#result').html('You cannot move content<br>from '+fromTable+' to the trash bin...');
            return false;
        }
        else {
            // check from which td we are dragging
            var fromTD = $(ui.draggable).attr("id");
            // get the inner html content for the td we are dragging the div from 
            var cell = $(ui.draggable).html();
            // insert the complete html content into the target drop cell
            $(this).html(cell);
            // for purposes of result logging / debugging
            var location = $(this).attr('id');
            $('#result').html('Moved '+cell+'<br>From '+fromTable+' / '+fromTD+' (table / td)<br>To the trash bin');
            // replace the content of the source td after drop
            $(ui.draggable).html('<div></div>');
        }
    }
});

});