2011-08-18 125 views
3

我对单个元素进行了HTML5拖放操作。这在多个浏览器中也可以工作,例如我有两个相同或不同的浏览器窗口打开,我可以从一个浏览器拖放到另一个浏览器的dropzone - 这适用于单个元素。HTML5在多个浏览器窗口之间拖放多个元素

有没有人知道如何使这项工作,如果要选择多个元素并拖放?

回答

4

你不能一次拖动多个东西,你需要做的就是沿着这些线。在这个例子中,假设我们有一个多选列表,当你拖动一个选中的元素时,所有选中的元素都应该被拖动。

  1. 侦听dragstart事件上
  2. 当设置数据传递的拖拽元素之一 - 你需要编码在那里的数据将代表所有你想要拖动的东西。
  3. 自定义拖动图像以显示用户拖动多个物件。

见例如这里jsfiddle

$(".draggableThingsSelector").on("dragstart", function(e) { 
    e = e.originalEvent; 

    var fruitList = [], 
     dragImage = document.createElement("ul"); 

    $("li.selected").each(function() { 
     fruitList.push(this.innerHTML); 
     dragImage.appendChild(this.cloneNode(true)); 
    }); 

    e.dataTransfer.setData("fruits", JSON.stringify(fruitList)); 
}); 

而且在这里看到的拖动图像支持更多的讨论:drag image support

+0

小提琴似乎被打破 – dlchambers

+0

它不会在IE浏览器。但是,如果您不使用IE,请确保在开始拖动之前点击水果进行选择。 – Woody

+0

使用Chrome。点击选择解决它。在制作ul时,存在瞬间闪光的问题,但我猜你可以通过将其渲染到屏幕外来解决这个问题。 – dlchambers

相关问题