js实现图片拖动改变顺序附图


Posted in Javascript onMay 13, 2014

在web页面中,需要改变多个元素的位置,可以通过元素拖动来实现。HTML5中加入了一个全局属性draggable,通过设置true/false来控制元素是否可拖动。

下面以图片拖动为例,用jQuery来实现:页面上有多个图片,把一个图片拖动到其他两个图片中间,就可以将这个图片的位置插入到两图之间。

<!DOCTYPE html> 
<html> 
<head> 
<style> 
.img-div img { 
width:200px; 
height:200px; 
float: left; 
} 
.img-div { 
float: left; 
} 
.drop-left,.drop-right { 
width: 50px; 
height: 200px; 
float: left; 
} 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
<script> 
$(document).ready(function() { // 正在拖动的图片的父级DIV 
var $srcImgDiv = null; 
// 开始拖动 
$(".img-div img").bind("dragstart", function() { 
$srcImgDiv = $(this).parent(); 
}); 
// 拖动到.drop-left,.drop-right上方时触发的事件 
$(".drop-left,.drop-right").bind("dragover", function(event) { 
// 必须通过event.preventDefault()来设置允许拖放 
event.preventDefault(); 
}); 
// 结束拖动放开鼠标的事件 
$(".drop-left").bind("drop", function(event) { 
event.preventDefault(); 
if($srcImgDiv[0] != $(this).parent()[0]) { 
$(this).parent().before($srcImgDiv); 
} 
}); 
$(".drop-right").bind("drop", function(event) { 
event.preventDefault(); 
if($srcImgDiv[0] != $(this).parent()[0]) { 
$(this).parent().after($srcImgDiv); 
} 
}); 
}); 
</script> 
</head> 
<body> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/38538/f/6864556.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/6695960.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/6683901.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
<div class="img-div"> 
<div class="drop-left"></div> 
<img src="http://photos.tuchong.com/349669/f/5121337.jpg" draggable="true"> 
<div class="drop-right"></div> 
</div> 
</body> 
</html>

dragstart是开始拖动元素的事件,dragover是拖动到元素上方的事件,drop是拖动结束松开鼠标的事件。

draggable="true"表示img元素是可以拖动的,不过实际上img默认就是可拖动的,所以这个属性也可以去掉,如果要拖动div元素那么就需要设置draggable="true"。

class为drop-left和drop-right的div元素放在图片的左右侧,用于接收其他图片拖动到这个位置。

js实现图片拖动改变顺序附图

Javascript 相关文章推荐
javaScript 简单验证代码(用户名,密码,邮箱)
Sep 28 Javascript
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
Jul 10 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
使用百度地图api实现根据地址查询经纬度
Dec 11 Javascript
JavaScript File API文件上传预览
Feb 02 Javascript
jQuery插件扩展测试实例
Jun 21 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
vue里如何主动销毁keep-alive缓存的组件
Mar 21 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
May 13 #Javascript
js加密解密字符串可自定义密码因子
May 13 #Javascript
JavaScript用Number方法实现string转int
May 13 #Javascript
javascript中expression的用法整理
May 13 #Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
You might like
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
Python实现的ini文件操作类分享
2014/11/20 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
python开发之list操作实例分析
2016/02/22 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python hashlib模块的使用示例
2020/10/09 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
几道PHP的面试题
2012/05/19 面试题
秋季运动会表扬稿
2014/01/16 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
会计人员岗位职责
2015/02/03 职场文书
毕业实习证明范本
2015/06/16 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
深入理解 Golang 的字符串
2022/05/04 Golang