不断优化,重构我的代码-----拖拽jquery插件
最近学东西学的有点太散了,歇一阵子,重新完善之前的JQ插件,今天先上拖拽吧
// JavaScript Document
(function($){
var defaults = {
actionElement : "", //获得事件的元素,非必填项
rangeElement : window, //可拖动范围的元素 非必填
direction : "", //默认为空,表示何以任意拖动, 可选值为vertical或者horizontal
magnetic : 0 //磁性吸附尺寸 非必填
} var opts = ""; //储存参数 var disX;
var disY; //保存后续需要操作的元素
var dragEle,actionEle,rangeElement; //像jQuery对象下添加方法
$.fn.drag = function( options ) { opts = $.extend( defaults , options || {} );
dragEle = $( this ); rangeEle = $( opts.rangeElement ); var actionSelector;
opts.actionElement != "" ? actionSelector = opts.actionElement : actionSelector = null ; dragEle.on("mousedown",actionSelector,dragFn); return $(this).each(function(){});
} //限制范围
function range ( value , maxValue , minValue) {
if( value > maxValue - opts.magnetic ){
return maxValue;
}else if( value < minValue + opts.magnetic ){
return minValue;
}
return value;
} //拖拽的主体函数
function dragFn(ev){ disX = ev.clientX - dragEle.offset().left;
disY = ev.clientY - dragEle.offset().top; $(document).on("mousemove",mousemove);
$(document).on("mouseup",mouseup); return false;
} //鼠标移动事件
function mousemove (ev) {
var left = ev.clientX - disX;
var top = ev.clientY - disY; left = range(left , rangeEle.width() - dragEle.width() , 0);
top = range(top , rangeEle.height() - dragEle.height() , 0); switch( opts.direction ){
case "horizontal" :
dragEle.css({"left" : left});
break;
case "vertical" :
dragEle.css({"top" : top });
break;
default :
dragEle.css({"left" : left,"top" : top });
break;
}
} //鼠标抬起移除事件
function mouseup () {
$(document).off("mouseup",mouseup);
$(document).off("mousemove",mousemove);
} })(jQuery)
使用方法
$("#drag").drag({
actionElement : ".action",
rangeElement : "#container",
direction : "horizontal",
magnetic : 15
});
暂时想不出来需要暴漏出来哪些参数比较有用,暂且这样,后续若有必要再修改
不断优化,重构我的代码-----拖拽jquery插件的更多相关文章
- 11个好用的jQuery拖拽拖放插件
这次我们整理一些拖拽播放类型的jQuery插件,这些可能不是很常用,但偶尔会有网站设计项目用到,特别是后台相关的开发项目,这个拖放排序功能一般都会有,所以适合大家收藏起来,方便日后使用.接下来一起看盾 ...
- Sortable拖拽排序插件数据筛选
后台有拖拽排序功能,然而前段在开发的时候,一整页的数据都发给后端了. 于是查看前端代码,想到了如下解决办法,即先把排序前的保存,然后对比排序后的,有差异的才发回给后端. var new_ids_ord ...
- div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~
产品需求,需要用到对div(dom)进行拖拽缩放操作,看到有好多插件,要么依赖jQuery,要么文件太大. 封装了一个插件,不压缩状态下5KB. html <!DOCTYPE html> ...
- HTML5 拖拽 & fabric 插件
### 拖拽 //html <div ondrop="drop(event)" ondragover="allowDrop(event)">< ...
- 拖拽 ‘vue-grid-layout’ 插件了解下
我接触到vue-grid-layout是通过我们公司的项目,感觉还是比较简单上手的,大概看了有1个小时吧,我是个行动派,就是觉得实践出真知,但是记性也不太好,有时候自己踩过的坑会忘记,会改但是会忘记原 ...
- 拖拽排序插件 ---- Dragula
相关链接: https://github.com/bevacqua/react-dragula https://github.com/bevacqua/react-dragula demo: ht ...
- vue-draggable-resizable 拖拽缩放插件
安装: npm install --save vue-draggable-resizable 使用: <template> <div style="height: 50 ...
- 如何将Js代码封装成Jquery插件
很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈. 代码如下 这是一个自定闪烁打印文字的Jquery特 ...
- .net mvc mssql easyui treegrid 及时 编辑 ,支持拖拽
这里提到了,1个问题,怎么扩展 Easyui 参见: http://blog.csdn.net/chenkai6529/article/details/17528833 @{ ViewBag.Titl ...
随机推荐
- mount img
直接挂载img文件有时会有 mount:您必须指定文件系统类型 的错误,但加 -t ext2 等类型还是没用. 这是因为img文件包含了mbr引导导致的问题.解决方法如下: $sudo fdis ...
- css特殊字符总结
< : < > : >
- word20161209
failback / 故障回复 failback policy / 故障回复策略 failed / 失败 failover / 故障转移 failover policy / 故障转移策略 failov ...
- JavaScript——之对象参数的引用传递
今天碰到一个问题,怎样把参数变更影响到函数外部,如: <script> var myname = "wood"; A(myname); document.write(m ...
- percona-toolkit 之 【pt-online-schema-change】说明
背景: MySQL 大字段的DDL操作:加减字段.索引.修改字段属性等,在5.1之前都是非常耗时耗力的,特别是会对MySQL服务产生影响.在5.1之后随着Plugin Innodb的出现在线加索引的提 ...
- HDU 5102 The K-th Distance(模拟)
题意:输入一棵树,输出前k小的点对最短距离dis(i,j)的和. 模拟,官方题解说得很清楚了.不重复了. http://bestcoder.hdu.edu.cn/ 需要注意的是,复杂度要O(n+k), ...
- Mac下Boost环境搭建
Boost,一个功能强大.跨平台.开源而且免费的C++程序库,可以在其官网了解更多:http://www.boost.org,C++标准经过不断的升级完善,现在已经功能越来越吸引人了,Boost开发过 ...
- poj 3280 Cheapest Palindrome
链接:http://poj.org/problem?id=3280 思路:题目给出n种m个字符,每个字符都有对应的添加和删除的代价,求出构成最小回文串的代价 dp[i][j]代表区间i到区间j成为回文 ...
- C#回顾 –5.反射
]; //获取构造函数 var obj = ci.Invoke(null);//实例化构造函数 T1.InvokeMember(funName, BindingFlags.InvokeMethod ...
- [BI项目记]-搭建代码管理环境之云端
这一篇主要介绍云端的TFS.微软在云端解决方案为我们提供了不错的选择,当本地的资源无法满足部署一个TFS的环境的时候,在互联网连接允许的情况下,可以考虑使用Visual Studio Online. ...