从这行代码:
event.originalEvent
似乎您正在使用jquery?所以只要考虑 jquery 让事情变得更容易并且是跨浏览器兼容的。
实现拖动的 HTML5 原生和 jquery 方法(仅使用 javascript)几乎相同。HTML5 仅添加了拖动事件,但没有更多的拖放方法:
没有jQuery:
function dragStart(event) {
event.originalEvent.dataTransfer.effectAllowed = 'move';
event.originalEvent.dataTransfer.setData("text/plain", event.target);//JUST ELEMENT references is ok here NO ID
console.log(event);
console.log('Dragging...');
var clone = event.target.cloneNode(true);
event.target.parentNode.appendChild(clone);
event.target.ghostDragger = clone;//SET A REFERENCE TO THE HELPER
$(clone).addClass('dragging');//NOW YOU HAVE A CLONE ELEMENT JUST USE this and remove on drag stop
return true;
}
function dragging(event){
var clone = event.target.ghostDragger;
//here set clone LEFT and TOP from event mouse moves
}
//ON STOP REMOVE HELPER ELEMENT
function stopDrag(event){
var clone = event.target.ghostDragger;
clone.parentNode.removeChild(clone);
}
使用 jquery:
$( "#draggable" ).draggable({
helper: "clone", //EVEN here you can set the helper you want by defining a funcition
start:function(event, ui){
ui.helper.addClass('yourclass');
}
});
尽管如此,我会建议使用 jquery ui 进行拖动。有了它,您可以根据需要个性化拖动助手。