基于jquery完美拖拽,可返回拖动轨迹


Posted in Javascript onMarch 29, 2012
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>完美拖拽</title> 
<style type="text/css"> 
html, body { 
overflow:hidden; 
} 
body, div, h2, p { 
margin:0; 
padding:0; 
} 
body { 
color:#fff; 
background:#000; 
font:12px/2 Arial; 
} 
p { 
padding:0 10px; 
margin-top:10px; 
} 
span { 
color:#ff0; 
padding-left:5px; 
} 
#box { 
position:absolute; 
width:300px; 
height:150px; 
background:#333; 
border:2px solid #ccc; 
top:150px; 
left:400px; 
margin:0; 
} 
#box h2 { 
height:25px; 
cursor:move; 
background:#222; 
border-bottom:2px solid #ccc; 
text-align:right; 
padding:0 10px; 
} 
#box h2 a { 
color:#fff; 
font:12px/25px Arial; 
text-decoration:none; 
outline:none; 
} 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(function(){ 
var bDrag = false; 
var _x,_y; 
var $box=$("#box") 
var aPos = [{ 
x: $("#box").offset().left, 
y: $("#box").offset().top 
}]; 
$("span:eq(1)").text(aPos[0].y); 
$("span:eq(2)").text(aPos[0].x); 
$("#box h2:first").mousedown(function(event){ 
var e=event || window.event; 
bDrag = true; 
_x=e.pageX-$box.position().left; 
_y=e.pageY-$box.position().top; 
return false 
}) 
$(document).mousemove(function(event){ 
if(!bDrag) return false; 
var e=event || window.event; 
var x=e.pageX-_x; 
var y=e.pageY-_y; 
var maxL = $(document).width() - $box.outerWidth(); 
var maxT = $(document).height() - $box.outerHeight(); 
x = x < 0 ? 0: x; 
x = x > maxL ? maxL: x; 
y = y < 0 ? 0: y; 
y = y > maxT ? maxT: y; 
$box.css({left:x,top:y}); 
aPos.push({ 
x: x, 
y: y 
}); 
status() 
return false 
}).mouseup(function(){ 
bDrag = false; 
status() 
return false 
}) 
$("#box h2:first a").click(function(){ 
if (aPos.length == 1) return; 
var timer = setInterval(function() { 
var oPos = aPos.pop(); 
oPos ? ($box.css({left : oPos.x + "px", top : oPos.y + "px"})) : clearInterval(timer) 
status(); 
},30); 
}).mousedown(function(){return false}) 
function status() { 
$("#box span:eq(0)").text(bDrag); 
$("#box span:eq(1)").text($box.position().top); 
$("#box span:eq(2)").text($box.position().left); 
} 
status() 
}) 
</script> 
</head> 
<body> 
<div id="box"> 
<h2><a href="javascript:;">点击回放拖动轨迹</a></h2> 
<p><strong>Drag:</strong><span></span></p> 
<p><strong>top:</strong><span></span></p> 
<p><strong>left:</strong><span></span></p> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
JavaScript获得选中文本内容的方法
Dec 02 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
js 判断各种数据类型的简单方法(推荐)
Aug 29 Javascript
AngularJS ng-style中使用filter
Sep 21 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
详解AngularJS之$window窗口对象
Jan 17 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 Javascript
一百行JS代码实现一个校验工具
Apr 30 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
Sep 27 Javascript
Javascript面向对象扩展库代码分享
Mar 27 #Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 #Javascript
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 #Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 #Javascript
jquery星级插件、支持页面中多次使用
Mar 25 #Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 #Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 #Javascript
You might like
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
mysql limit查询优化分析
2008/11/12 PHP
php str_pad 函数用法简介
2009/07/11 PHP
php htmlspecialchars加强版
2010/02/16 PHP
php array_search() 函数使用
2010/04/13 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
Python中将字典转换为列表的方法
2016/09/21 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python查看数据类型的方法
2019/10/12 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
启动一个线程是用run()还是start()
2016/12/25 面试题
个人求职信范文分享
2014/01/06 职场文书
离职证明标准格式
2014/09/15 职场文书
上学路上观后感
2015/06/16 职场文书