拖拽的原生和jQuery写法
相关事件
- drag
- dragstart
- dragend
- dragover
- dragenter
- dragleave
- dragexit
- drop
原生写法
var dragged;/* 可拖动的目标元素会触发事件 */document.addEventListener("drag", function( event ) {}, false);document.addEventListener("dragstart", function( event ) {// 保存拖动元素的引用(ref.)dragged = event.target;// 使其半透明event.target.style.opacity = .5;}, false);document.addEventListener("dragend", function( event ) {// 重置透明度event.target.style.opacity = "";}, false);/* 放下目标节点时触发事件 */document.addEventListener("dragover", function( event ) {// 阻止默认动作event.preventDefault();}, false);document.addEventListener("dragenter", function( event ) {// 当可拖动的元素进入可放置的目标高亮目标节点if ( event.target.className == "dropzone" ) {event.target.style.background = "purple";}}, false);document.addEventListener("dragleave", function( event ) {// 当拖动元素离开可放置目标节点,重置其背景if ( event.target.className == "dropzone" ) {event.target.style.background = "";}}, false);document.addEventListener("drop", function( event ) {// 阻止默认动作(如打开一些元素的链接)event.preventDefault();// 移动拖动的元素到所选择的放置目标节点if ( event.target.className == "dropzone" ) {event.target.style.background = "";dragged.parentNode.removeChild( dragged );event.target.appendChild( dragged );}}, false);
复制代码
jQuery写法
//拖放开始:获取id放入dataTransfer$(".divide-pep").on("dragstart",function(e){e.originalEvent.dataTransfer.setData("obj_add",e.target.id);console.log(e.originalEvent.dataTransform)});//允许放入$(".divide-droppable,.option-area").on("dragover",function(e){e.originalEvent.preventDefault();})//放下事件$(".divide-droppable").on("drop",function(e){e.originalEvent.preventDefault;var id = e.originalEvent.dataTransfer.getData("obj_add");$(this).append($("#"+id));})$(".option-area").on("drop",function(e){e.originalEvent.preventDefault;var id = e.originalEvent.dataTransfer.getData("obj_add");$(this).append($("#"+id));})
复制代码
originalEvent是什么?
个人理解originalEvent是jQuery封装的,用于获取原生event事件的;
栗子
$('#aaa').on("touchstart", touchStart);function touchStart(event){console.log(event);
}
//这样可读到,event.originalEvent.touches[0]
复制代码
//用原生的,这样可读到,event.touches[0]
document.getElementById('aaa').addEventListener("touchstart", touchStart, false);function touchStart(event){console.log(event.touches[0]);
}
复制代码
dataTransfer是什么?
在进行拖放操作时,DataTransfer对象用来保存被拖动的数据。它可以保存一项或多项数据、一种或者多种数据类型。
方法
addElement()
设置拖动源。通常你不需要改变这项,如果修改这项将会影响拖动的哪个节点和dragend事件的触发。默认目标是被拖动的节点。 obj.addElement();
clearData()
删除与给定类型关联的数据。类型参数是可选的。如果类型为空或未指定,将删除所有类型相关联的数据。如果不存在指定类型的数据,或数据传输不包含任何数据,此方法将没有任何效果。 obj.clearData(type);
getData()
根据指定的类型检索数据,如果指定类型的数据不存在或者该 DataTransfer 对象中没有数据,方法将返回一个空字符串。 obj.getData(type);
setData()
为一个给定的类型设置数据。如果该数据类型不存在,它将添加到的末尾,这样类型列表中的最后一个项目将是新的格式。如果已经存在的数据类型,替换相同的位置的现有数据。就是,当更换相同类型的数据时,不会更改类型列表的顺序。 obj.setData(type,data);
之前用jq写过拖拽总结的文,当时应该是参考别人的文章写的,如侵权请告知~
拖拽的原生和jQuery写法相关推荐
- html实现拖拽排序,简单的jquery拖拽排序效果实现代码
步骤: 1.实现随鼠标移动的效果: 2.初始化一个元素及其坐标: 3.拖拽对象的最后坐标,与元素的坐标 进行计算和判断 来确定 要插入的目标元素: 4.用insertBefore 方法 插入到目标元素 ...
- jquery ui放大缩小_jQuery拖拽放大缩小插件idrag
插件描述:24行代码,让你的网页元素任意放大.缩小.拖拽.移动 基于jQuery:$(document).mousemove(function(e) { if (!!this.move) { var ...
- Vue2 _ 实现拖拽功能
老项目重构,其中有一些拖拽功能,不过用的是两个开源 JS 拖拽文件实现的效果,版本太老了,所以需要换代了,然后就查阅了能够用 Vue 来简单快速实现拖拽的功能实现方法 : 目录 一.HTML 拖放 二 ...
- vue3 draggable拖拽
!!首先安装 vuedraggable npm i -S vuedraggable@next 一定要带上@next,不然就会报错 很恶心!使用建议看官网. 官网:vue.draggable中文文档 ...
- jquery 手指滑动多半屏_JS拖拽专题(五)——「玩出花儿来」移动端滑动事件的封装...
欢迎来到我的JS拖拽专题系列文章,本章节将是拖拽系列的最后一篇.感谢大家的支持^_^ 上一章节我们说到了拖拽让图片相互之间交换位置,相对来说是一个比较综合的示例,涉及到了矩形的碰撞检测,勾股定理计算两 ...
- 原生javascript实现拖拽改变table表格行高(html)
最近在做一个OA的项目,里面需要大量的表格操作.有一些是使用html中的table去模拟excel的功能,等项目做完,我会把这些好玩的功能抽取出来,做一个html的excel插件. 今天先和大家分 ...
- 用jQuery添加dragstart,dragover和drop事件,实现拖拽效果
一.效果图 二.代码 <!DOCTYPE html> <html><head><meta charset="UTF-8"><t ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- jquery 磁铁模式控件_利用JQuery拖拽插件实现拖拽效果
asp教程x.cs" inherits="jquerydrag._default" %> $(document).ready(function() { //拖拽方法 ...
最新文章
- ecshop文章增加点击次数插件
- 高效整洁CSS代码原则
- composer安装其实可以很简单 两行命令就解决了
- 17、Java Swing Timer:计时器组件
- y7000p电池固件_拯救者Y7000、Y7000P、Y9000k显卡切换了解一下
- 运动搜索(运动估计)知识
- java poi读取excel公式,返回计算值(转)
- Flash 3D 基础
- windows10连接小米耳机Redmi AirDots 2
- skiller3.31 发布
- 《彩虹屁》快夸夸我!彩虹屁生成器
- 笔记本win7怎么重装系统步骤
- python画平行四边形_利用transform skewX制作平行四边形导航菜单
- 电商平台--Mysql主从搭建(2)
- NYOJ171 聪明的kk
- 雷达编程实战之恒虚警率(CFAR)检测
- 小程序:微信公众平台:小程序
- 软件工程头歌软件测试(实验五)软件项目管理(实验六)
- ultramon安装
- SSM冬奥会志愿者招募系统毕业设计源码191621
热门文章
- async [ə'zɪŋk] 函数
- JavaScript为unicode编码转换为中文
- 《Head First Python》笔记 第四章 持久存储
- Android学习笔记21:ImageView获取网络图片
- leetcode 3. Longest Substring Without Repeating Characters
- mac os x 添加 用户 所属 组
- HTML5中关于wheel事件兼容性处理
- jsp写入mysql数据库时出现乱码
- CSS:布局的三个关键属性:float、position、display
- 如何对.NET远程处理框架相关知识简介