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系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
jQuery实现高亮显示的方法
Mar 10 Javascript
JavaScript实现非常简单实用的下拉菜单效果
Aug 27 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
JS基础之逻辑结构与循环操作示例
Jan 19 Javascript
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
优化PHP程序的方法小结
2012/02/23 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
python实现telnet客户端的方法
2015/04/15 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
PyQt5实现简易计算器
2020/05/30 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
幼儿园教育教学反思
2014/01/31 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书