div拖拽插件——JQ.MoveBox.js(自制JQ插件)


Posted in Javascript onMay 17, 2013

有一段时间没更新博客了,都不知道忙些什么,学习也没什么进展,惭愧。
这一周空闲的时间学着自己写一下JQ插件。

以前用原生的JS做过类似拖拽div的效果,现在按原思路改做成一个JQ的小插件,当作制作JQ插件的一个小练习。
html为

<!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=gb2312" /> 
<title></title> 
<style type="text/css"> 
*{margin:0;padding:0;} 
#box{width:500px;height:500px;margin:200px auto;position:relative;border:1px solid #ccc;border-left:2px solid #ccc;} 
.float-box{width:100px;height:100px;background:#000;color:#fff;position:absolute;top:20px;left:10px;cursor:move;z-index:2;border:2px solid #ccc;border-right:10px solid #fc0;} 
.float-box1{width:200px;height:200px;background:#f30;color:#fff;position:absolute;top:0;left:200px;cursor:move;border-top:10px solid #000;} 
</style> 
</head> 
<body> 
<div id="box"> 
<div class="float-box"></div> 
<div class="float-box1"></div> 
</div> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="JQ.MoveBox.js"></script> 
<script type="text/javascript"> 
$(".float-box").MoveBox(); 
$(".float-box1").MoveBox({out:true}); 
</script> 
</body> 
</html>

下面为JQ.MoveBox.js
(function($){ 
var n = 1; 
var o = {} 
$.fn.MoveBox=function(options){ 
var opts = $.extend({}, $.fn.MoveBox.defaults, options); 
return this.each(function(i){ 
$(this).mousedown(function(e){ 
o.iTop = $(this).position().top - e.pageY; 
o.iLeft = $(this).position().left - e.pageX; 
n++; 
$this = $(this); 
$this.css({'z-index':n}); 
$(document).bind("mousemove",function(e){ 
var iLeft = e.pageX + o.iLeft; 
var iTop = e.pageY + o.iTop; 
if(opts.out){ 
if(iLeft<-$this.parent().offset().left-parseInt($this.parent().css("border-left-width"))){ 
iLeft = -$this.parent().offset().left-parseInt($this.parent().css("border-left-width")); 
}else if(iLeft>$(document).width()-$this.width()-parseInt($this.css("border-left-width"))-parseInt($this.css("border-right-width"))-$this.parent().offset().left-parseInt($this.parent().css("border-left-width"))){ 
iLeft = $(document).width()-$this.width()-parseInt($this.css("border-left-width"))-parseInt($this.css("border-right-width"))-$this.parent().offset().left-parseInt($this.parent().css("border-left-width")); 
} 
if(iTop<-$this.parent().offset().top-parseInt($this.parent().css("border-top-width"))+$(document).scrollTop()){ 
iTop = -$this.parent().offset().top-parseInt($this.parent().css("border-top-width"))+$(document).scrollTop(); 
}else if(iTop>$(window).height()+$(document).scrollTop()-$this.height()-parseInt($this.css("border-top-width"))-parseInt($this.css("border-bottom-width"))-$this.parent().offset().top-parseInt($this.parent().css("border-top-width"))){ 
iTop = $(window).height()+$(document).scrollTop()-$this.height()-parseInt($this.css("border-top-width"))-parseInt($this.css("border-bottom-width"))-$this.parent().offset().top-parseInt($this.parent().css("border-top-width")); 
} 
}else{ 
if(iLeft<0){ 
iLeft = 0; 
}else if(iLeft>$this.parent().width()-$this.width()-parseInt($this.css("border-left-width"))-parseInt($this.css("border-right-width"))){ 
iLeft = $this.parent().width()-$this.width()-parseInt($this.css("border-left-width"))-parseInt($this.css("border-right-width")); 
} 
if(iTop<0){ 
iTop = 0; 
}else if(iTop>$this.parent().height()-$this.height()-parseInt($this.css("border-top-width"))-parseInt($this.css("border-bottom-width"))){ 
iTop = $this.parent().height()-$this.height()-parseInt($this.css("border-top-width"))-parseInt($this.css("border-bottom-width")); 
} 
} 
$this.css({ 
'left':iLeft +"px", 
'top':iTop + "px" 
}) 
}); 
$(document).bind("mouseup",function(){ 
$(document).unbind("mousemove"); 
$(document).unbind("mouseup"); 
}); 
}); 
}); 
}; $.fn.MoveBox.defaults = { 
out:false //默认不可跑出线外 
}; 
})(jQuery);
Javascript 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
javascript分页代码实例分享(js分页)
Dec 13 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
深入研究React中setState源码
Nov 17 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
webpack打包html里面img后src为“[object Module]”问题
Dec 22 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
详解Vue3中对VDOM的改进
Apr 23 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 #Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 #Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 #Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 #Javascript
javascript检测页面是否缩放的小例子
May 16 #Javascript
js获取键盘按键响应事件(兼容各浏览器)
May 16 #Javascript
js如何获取file控件的完整路径具体实现代码
May 15 #Javascript
You might like
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP 面向对象详解
2012/09/13 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
wxPython事件驱动实例详解
2014/09/28 Python
Python 中 Meta Classes详解
2016/02/13 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
客户表扬信范文
2014/01/10 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
顶碗少年教学反思
2014/02/21 职场文书
校庆活动策划方案
2014/06/05 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
学生逃课检讨书
2015/02/17 职场文书
会议室管理制度范本
2015/08/06 职场文书
药房管理制度范本
2015/08/06 职场文书
敬老院活动感想
2015/08/07 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL