如何使用jQuery Draggable和Droppable实现拖拽功能

2020-05-23 06:12:22易采站长站整理


image
当用户拖动B节点时,首先把B元素上的内容复制给draggableDiv元素,当用户拖动B元素,其实是拖动draggableDiv元素。所以我们要计算出我们点击的B元素的位置,然后让draggableDiv在拖动时候显示正确的位置,然后拖动就是draggableDiv元素,用户看起来是拖动的B节点元素。

var clickElement = null; $(“.threepanels .ptreelist”).bind(“mousedown”,function (event) {
//获取当前mousedown元素的内容
var itemContent = $(this).html(); var draggableDiv = $(“#draggableDiv”);
$(draggableDiv).css({ “display”: “block”, “height”: 0 });
//将点击的元素内容复制
clickElement = $(this).clone();
var currentdiv = $(this).offset(); $(draggableDiv).css({ “top”: currentdiv.top, “left”: currentdiv.left }); draggableDiv.trigger(event);
//取消默认行为 return false; });
$(“#draggableDiv”).mouseup(function (event) { $(this).css({ “height”: “0” }); });
//拖动元素时鼠标的位置
var dragDivLeft = 0;
var dragDivTop = 0;
$(“#draggableDiv”).draggable({ containment: “parent”, drag: function (event, ui) { $(“#draggableDiv”).css({ “width”: “260px”, “height”: “22px” });
    $(“#draggableDiv”).append(clickElement);
    var closeTop = $(“.closeBar”).offset().top;
    dragDivLeft = event.target.offsetLeft;
    dragDivTop = event.target.offsetTop; },
    stop: function () {
        //拖拽结束,将拖拽容器内容清空
        $(“#draggableDiv”).html(“”);
        $(“#draggableDiv”).css({“height”:”0″}); }
});

第三步:右边的元素可以放到指定的位置上
需要将元素拖到指定的区域里面,然后释放操作。完成“放”的操作。可以从上图看出,我是将元素的上边左边和下边缘的左边存到一个数组里面。然后在“拖”的过程中,一直记录了拖动的左边,放到右侧时,就可以判断当前元素将要放的位置。具体可以下载代码查看。
完成代码之后的效果图如下:
image


代码下载:DragandDrop.rar