javascript拖曳互换div的位置实现示例


Posted in Javascript onJune 28, 2021

1 实现原理

利用dom元素的dragstart/ondragover/ondrop事件完成,在拖曳开始的时候获取到拖曳元素,然后允许拖动,最后鼠标抬起后放到新的位置;这里用到了event.preventDefault()方法,很多人可能比较疑惑,这里简单介绍一下

event.preventDefault() :该方法是让浏览器不要执行与事件关联的默认动作

我们在dragover事件中使用,因为dragover关联的默认动作是阻止将数据或者元素放置到其他元素中;所以需要通过event.preventDefault()禁止该默认事件,这样就可以允许拖动元素到新的位置了

<!-- div拖曳调换顺序 适用gis中切换图层顺序-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <style type="text/css">
        body{
            display: flex;
            padding: 100px;
            flex-direction: column;
        }
        div{
            width: 100px;
            height: 100px;
            text-align: center;
        }
    </style>
 
</head>
<body>
   <div style="background-color: red;width:200px;height:200px;" draggable="true">红色</div>
    <div style="background-color: green;width:100px" draggable="true">绿色</div>
    <div style="background-color: blue;" draggable="true">蓝色</div>
</body>
<script type="text/javascript">
    let div =document.getElementsByTagName("div");
    let container=null;
    // 遍历给每一个div绑定 dragstart dragover以及drop事件
    for(let i=0;i<div.length;i++){
        div[i].ondragstart=function(){  
            container=this
        }
        div[i].ondragover=function(){
            event.preventDefault();
        }
        div[i].ondrop=function(){
            debugger;
            if(container!=null&&container!=this){
                // 具体思路跟变量值互换一样
                let temp=document.createElement("div");
                document.body.replaceChild(temp,this);   //用新建的div占据目的位置
                document.body.replaceChild(this,container);// 目的div放置在起始位置
                document.body.replaceChild(container,temp)  // 起始div放置在目的位置
                debugger; 
                console.log('执行业务逻辑')
            }
        }
    }
</script>
</html>

javascript拖曳互换div的位置实现示例

到此这篇关于javascript拖曳互换div的位置实现示例的文章就介绍到这了,更多相关javascript拖曳互换div内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
非常好的js代码
Jun 27 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
Dec 06 Javascript
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
Textarea与懒惰渲染实现代码
Jan 04 Javascript
js将json格式内容转换成对象的方法
Nov 01 Javascript
用jquery实现的一个超级简单的下拉菜单
May 18 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
简单谈谈ES6的六个小特性
Nov 18 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
JS实现手风琴特效
Nov 08 Javascript
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
php 购物车完整实现代码
2014/06/05 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
js 函数的副作用分析
2011/08/23 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
总结Python编程中函数的使用要点
2016/03/20 Python
python getopt详解及简单实例
2016/12/30 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Django的Modelforms用法简介
2019/07/27 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
美德少年事迹材料
2014/01/23 职场文书
高校教师岗位职责
2014/03/18 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
用Python生成会跳舞的美女
2022/01/18 Python