不断优化,重构我的代码-----拖拽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 ...
随机推荐
- 网址前面的icon
shortcut icon和icon代码之间究竟有何区别呢.下面介绍一下 语句一:<link rel="shortcut icon" href="favicon ...
- MySQL SQL优化
一.优化数据库的一般步骤: (A) 通过 show status 命令了解各种SQL的执行频率. (B) 定位执行效率较低的SQL语句,方法两种: 事后查询定位:慢查询日志:--log-slow-qu ...
- HDU 4946 Area of Mushroom(构造凸包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4946 题目大意:在一个平面上有n个点p1,p2,p3,p4....pn,每个点可以以v的速度在平面上移 ...
- 多文件上传 file-uploader.js
插件暴露给用户可以设置的参数 插件构成 声明一个全局对象qq,在对象上封装几个方法,类似JQUERY的方法 qq.extend 合并对象属性,类似$.extend() qq.indexOf 获取元素索 ...
- ubuntu16.04下安装cuda8.0
一.首先安装NVIDIA显卡驱动 通过NVIDIA-Linux-x86_64-367.44.run文件安装. 1. 添加 PPA. sudo add-apt-repository ppa:graphi ...
- Resource Acquisition Is Initialization(RAII Idiom)
原文链接:http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Resource_Acquisition_Is_Initialization Intent ...
- 2.EasyUI学习总结(二)——easyloader分析与使用(转载)
本文转载自:http://www.cnblogs.com/haogj/archive/2013/04/22/3036685.html 使用脚本库总要加载一大堆的样式表和脚本文件,在easyui 中,除 ...
- c# ContinueWith 用法
通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务.例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作.任务处理程序都不带参数或者带一个对象参数,而 ...
- 转:Autodesk 2017软件下载+注册机+破解方法(持续更新)
转载自http://blog.sina.com.cn/s/blog_710225790102w03e.html Autodesk 2017安装步骤: 安装Autodesk 2017相关软件 使用序列号 ...
- 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)
欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...