HTML5 元素拖拽实现 及 jquery.event.drag插件

 

 

 

如上图片:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>可拖拽的元素组件</title>
    <style>
        #d1 {width:800px; height:100px; border:1px solid #ddd; background:#eee; margin:5px;}
        #d2 {width:800px; height:100px; border:1px solid #ddd; background:#eee; margin:5px;}
        
    </style>
</head>
<body>
    <div id="d1">
      <img id="myimg" src="https://www.baidu.com/img/baidu_jgylogo3.gif" />
    </div>
 
   <div id="d2"></div>
   
   <script>
   
   //获取图片及两个div元素
    var d1 = document.getElementById("d1"),
        myimg = document.getElementById("myimg"),
        d2 = document.getElementById("d2");

    //给图片绑定dragstart事件
    myimg.addEventListener("dragstart",MyDragStart);
    
    //给第二个div绑定dragover,drop两个事件
    d2.addEventListener("dragover",MyDragover);
    d2.addEventListener("drop",MyDrop);

    //给第一个div绑定dragover,drop两个事件
    d1.addEventListener("dragover",MyDragover);
    d1.addEventListener("drop",MyDrop);

    //图片开始拖拽事件的处理函数
    function MyDragStart(event){
        var mydata = myimg.id;//保存ID值
        var trans = event.dataTransfer;
        trans.setData("text",mydata);
    }

    //该处理函数是为阻止页面的默认行为
    function MyDragover(){
        event.preventDefault();
    }

    //drop处理函数
    function MyDrop(event){
        //
        var trans = event.dataTransfer;//获取数据保存对象
        var mysrc = trans.getData("text");//图片id
        var ele = document.getElementById(mysrc);//获取到图片对象
        if (ele != event.srcElement)//判断图片是否移动
        {
            event.srcElement.appendChild(ele.parentNode.removeChild(ele));//将img元素剪切到目标div中
        }

        trans.clearData("text");//清除数据
    }
    </script>
</body>
</html>
View Code

 

 W3CSHOOL:

<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1, #div2
{float:left; width:198px; height:66px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script type="text/javascript">
function allowDrop(ev)
{
ev.preventDefault();
}

function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}

function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
  <img src="/i/eg_dragdrop_w3school.gif" draggable="true" ondragstart="drag(event)" id="drag1" />
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

</body>
</html>
View Code

 

H5 JQUERY:

<!DOCTYPE html>
<html lang>
<head>
<meta charset="UTF-8">
<title>H5-tuozuai</title>

<script src = "http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<style>
.dd {}
.dd li{display:inline-block; padding:5px; margin:5px; border:1px solid red; text-align:center; cursor:move;}
.dd li img {display:block;}

.dd_over li {min-height:200px; margin:15px; border:1px dashed #ddd;}
</style>
</head>
<body>

    <ul class="dd">
        <li><img src="https://www.baidu.com/img/baidu_jgylogo3.gif">abc</li>
        <li><img src="https://www.baidu.com/img/baidu_jgylogo3.gif">123</li>
        <li><img src="https://www.baidu.com/img/baidu_jgylogo3.gif">678</li>
    </ul>
    <ul class="dd_over">
        <li></li>
        <li></li>
        <li></li>
    </ul>

    <script>

        var dd = $(".dd li");
        var dd_over = $(".dd_over li");
        
        //把被拖动的元素进行循环,并进行setData
        dd.each(function(index,val){
          val.ondragstart = function(event){//拖拽刚开始时
                  event.dataTransfer.setData("key", $(val).html());//用key作为被移动的数据
              console.log("start begin");
          };
        });
        
        //设置DIV可接收
        dd_over.each(function(index,val){
            val.ondragover = function(event){
                event.preventDefault();
                console.log("o");
            };
        });
        
        // 将被拖动元素放入DIV
        dd_over.each(function(index,val){
            val.ondrop = function(event){
                var key = event.dataTransfer.getData("key");
                var html = $("<span style='border:solid 1px #f60; padding:5px; margin:5px;'>"+key+"</span>")
                //var html = $("<span style='border:solid 1px #f60; padding:5px; margin:5px;'>aa</span>")
                $(this).append(html);
                console.log("stop" + index);
            };
        });

    </script>
</body>
</html>
View Code

 

demo如图:

 

 

http://www.cnblogs.com/Medeor/p/4963321.html

 

拖拽插件的话,如下:jquery.event.drag

http://threedubmedia.com/code/event/drop#demos

 

posted @ 2017-01-24 10:29  James2019  阅读(2672)  评论(0编辑  收藏  举报