1

这是小提琴

我有一个带有可多选的可拖动行的表,但我想将它们整体拖到另一个表中并将它们放在那里 - 不是作为附加元素附加到另一个表中,而是对信息做一些事情,即表单提交。

我的示例最初基于我在这里找到的另一个演示: multi drag demo

这是此问题的基本示例的 HTML 代码。

<table class="DraggableThings">
  <tr draggable='true'><td >Row 1</td></tr>
  <tr draggable='true'><td >Row 2</td></tr>
  <tr draggable='true'><td >Row 3 </td></tr>
</table>

<table id='menu_table'>
  <tbody>
    <tr>
        <td class='droppableItem' >accomplished</td>
    </tr>
  </tbody>
</table>

这是JQuery代码

$('.droppableItem')
   .bind('dragenter dragover', false)
   .bind('drop', function(event){
       accomplished($(this),event);
});
$('.DraggableThings tr').bind('click', function () {
   $(this).toggleClass("selected");
});
$('.DraggableThings tr').bind('dragstart', function(event){
  var mytext = event.target.innerText;
  event.originalEvent.dataTransfer.setData('txt', mytext );
});
$('.DraggableThings tr').drag("init", function () {
    return $('.selected');
  }).drag(function (ev, dd) {
    $(this).css({
        top: dd.offsetY,
        left: dd.offsetX
    });
});


function accomplished(thing,event) {
  event.dataTransfer = event.originalEvent.dataTransfer;
  var data = event.dataTransfer.getData('txt');
  log(data + " made it to accomplishments");
}

css

.selected {
  background-color: #ECB;
}

这是小提琴

希望有人知道答案 谢谢

4

1 回答 1

2

这是一个JSFiddle演示,但我建议修复表格行,因为拖动多行有时会将一个表格行与另一个表格行混淆,因为它们没有那么大的间隔,所以它无法告诉您要放置哪个表格行要素。为了测试目的,我把它们放大了。

您可以通过单击而不是拖动来确保将其添加到正确的类别中。

它与您的其他问题中的代码相同,只是我们将其切换为action(ui.helper.children(), event);以便传递我们选择的元素(及其各自的文本)和事件,该事件返回表格行的内部文本(即完成、推迟和已删除)。

重写的动作代码为:

function action(a,b) {
    for(var i = 0; i < a.length; i++)
        log(a[i].innerText + " made it to " + b.target.innerText);
}

我们在一个循环中发布到日志,这样我们就可以得到我们单独选择的所有元素。b.target.innerText获取类别(再次,即完成、推迟和删除)。不循环意味着我们得到了所有元素的连接(例如“Row1Row2”)。

于 2014-02-17T02:58:34.803 回答