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 相关文章推荐
JavaScript 对象成员的可见性说明
Oct 16 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
Dec 04 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
Vue实现页面添加水印功能
Nov 09 Javascript
js实现小时钟效果
Mar 25 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 Javascript
原生JavaScript实现轮播图
Jan 10 Javascript
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
php学习之 数组声明
2011/06/09 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
详解js删除数组中的指定元素
2018/10/31 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
python实现猜数字游戏
2020/03/25 Python
Python解析json代码实例解析
2019/11/25 Python
Python如何转换字符串大小写
2020/06/04 Python
谈谈python垃圾回收机制
2020/09/27 Python
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
名企HR怎样看待求职信
2014/02/23 职场文书
食堂标语大全
2014/06/11 职场文书
表扬稿格式范文
2015/01/16 职场文书
JavaScript 原型与原型链详情
2021/11/02 Javascript
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技