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代码
Sep 02 Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
总结Node.js中的一些错误类型
Aug 15 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
Node.js Buffer用法解读
May 18 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 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
PHP 多进程 解决难题
2009/06/22 PHP
php 生成WML页面方法详解
2009/08/09 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
vue实现扫码功能
2020/01/17 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
中间件分为哪几类
2012/03/14 面试题
蛋糕店创业计划书
2014/05/06 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
初中家长评语大全
2014/12/26 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL