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函数对象
Nov 15 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
jQuery中绑定事件bind() on() live() one()的异同
Feb 23 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
JavaScript的一些小技巧分享
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
PHP 引用是个坏习惯
2010/03/12 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
js+css实现打字效果
2020/06/24 Javascript
Puppet的一些技巧
2018/09/17 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
bpython 功能强大的Python shell
2016/02/16 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
什么是python类属性
2020/06/10 Python
python 实现端口扫描工具
2020/12/18 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
感恩节活动方案
2014/01/27 职场文书
个人工作表现评价材料
2014/09/21 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
个人售房合同协议书
2016/03/21 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS