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 相关文章推荐
JS面向对象、prototype、call()、apply()
May 14 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
AngularJS基础教程之简单介绍
Sep 27 Javascript
JavaScript驾驭网页-DOM
Mar 24 Javascript
基于jquery插件编写countdown计时器
Jun 12 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 Javascript
Vue前端项目部署IIS的实现
Jan 06 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
pycharm远程调试openstack代码
2017/11/21 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
学习python可以干什么
2019/02/26 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
园林设计师自荐信
2013/11/18 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
大二学习计划书范文
2014/04/27 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
总经理检讨书范文
2015/02/16 职场文书