码迷,mamicode.com
首页 > 其他好文 > 详细

拖拉事件

时间:2016-11-25 19:34:20      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:data   elm   数据   event   com   color   app   ble   log   

   var dragged;

    var f = document.getElementById(‘div3‘);

    document.getElementById(‘draggable‘).addEventListener("dragstart", function( event ) {
        // 保存被拖拉节点
        dragged = event.target;
        // 被拖拉节点的背景色变透明
        event.target.style.opacity = 0.5;
        // 兼容Firefox
        event.dataTransfer.setData(‘text/plain‘, ‘anything‘);
    }, false);

    document.getElementById(‘draggable‘).addEventListener(‘dragend‘, function( event ) {
        // 被拖拉节点的背景色恢复正常
        event.target.style.opacity = ‘‘;
    }, false);

    f.addEventListener(‘dragover‘, function( event ) {
        // 防止拖拉效果被重置,允许被拖拉的节点放入目标节点
        event.preventDefault();
    }, false);

    f.addEventListener(‘dragenter‘, function( event ) {
        // 目标节点的背景色变紫色
        // 由于该事件会冒泡,所以要过滤节点
        if ( event.target.className == ‘dropzone‘ ) {
            event.target.style.background = ‘purple‘;
        }
    }, false);

    f.addEventListener(‘dragleave‘, function( event ) {
        // 目标节点的背景色恢复原样
        if ( event.target.className == ‘dropzone‘ ) {
            event.target.style.background = "";
        }
    }, false);

    f.addEventListener(‘drop‘, function( event ) {
        // 防止事件默认行为(比如某些Elment节点上可以打开链接)
        event.preventDefault();
        if ( event.target.className === ‘dropzone‘ ) {
            // 恢复目标节点背景色
            event.target.style.background = ‘‘;
            // 将被拖拉节点插入目标节点
            dragged.parentNode.removeChild( dragged );
            event.target.appendChild( dragged );
        }
    }, false);
<div class="dropzone" id="div1">
       <div id="draggable" draggable="true" style="background-color: yellow">
      该节点可拖拉
  </div>
</div>
<br/>
<br/>
<br/>
<div class="dropzone" id="div2"></div>
<br/>
<br/>
<br/>
<div class="dropzone" id="div3"></div>
<br/>
<br/>
<br/>
 <div class="dropzone" id="div4"></div>

dragover事件:拖拉到当前节点上方时,在当前节点上持续触发,该事件的target属性是当前节点。该事件与dragenter事件基本类似,默认会重置当前的拖拉事件的效果(DataTransfer对象的dropEffect属性)为none,即不允许放下被拖拉的节点,所以如果允许在当前节点drop数据,通常会使用preventDefault方法,取消重置拖拉效果为none。

 

 

原文链接:http://javascript.ruanyifeng.com/dom/event-type.html

拖拉事件

标签:data   elm   数据   event   com   color   app   ble   log   

原文地址:http://www.cnblogs.com/neverleave/p/6102435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!