最近学东西学的有点太散了,歇一阵子,重新完善之前的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插件的更多相关文章

  1. 11个好用的jQuery拖拽拖放插件

    这次我们整理一些拖拽播放类型的jQuery插件,这些可能不是很常用,但偶尔会有网站设计项目用到,特别是后台相关的开发项目,这个拖放排序功能一般都会有,所以适合大家收藏起来,方便日后使用.接下来一起看盾 ...

  2. Sortable拖拽排序插件数据筛选

    后台有拖拽排序功能,然而前段在开发的时候,一整页的数据都发给后端了. 于是查看前端代码,想到了如下解决办法,即先把排序前的保存,然后对比排序后的,有差异的才发回给后端. var new_ids_ord ...

  3. div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~

    产品需求,需要用到对div(dom)进行拖拽缩放操作,看到有好多插件,要么依赖jQuery,要么文件太大. 封装了一个插件,不压缩状态下5KB. html <!DOCTYPE html> ...

  4. HTML5 拖拽 & fabric 插件

    ### 拖拽 //html <div ondrop="drop(event)" ondragover="allowDrop(event)">< ...

  5. 拖拽 ‘vue-grid-layout’ 插件了解下

    我接触到vue-grid-layout是通过我们公司的项目,感觉还是比较简单上手的,大概看了有1个小时吧,我是个行动派,就是觉得实践出真知,但是记性也不太好,有时候自己踩过的坑会忘记,会改但是会忘记原 ...

  6. 拖拽排序插件 ---- Dragula

    相关链接:  https://github.com/bevacqua/react-dragula https://github.com/bevacqua/react-dragula demo:  ht ...

  7. vue-draggable-resizable 拖拽缩放插件

    安装: npm install --save vue-draggable-resizable 使用: <template>   <div style="height: 50 ...

  8. 如何将Js代码封装成Jquery插件

    很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈. 代码如下 这是一个自定闪烁打印文字的Jquery特 ...

  9. .net mvc mssql easyui treegrid 及时 编辑 ,支持拖拽

    这里提到了,1个问题,怎么扩展 Easyui 参见: http://blog.csdn.net/chenkai6529/article/details/17528833 @{ ViewBag.Titl ...

随机推荐

  1. BZOJ2435——[Noi2011]道路修建

    1.题意:给个树,边的权值=两边的点数差*此边的长度,求所有边的权值和 2.分析:真不想说啥了...dfs即可 #include <cmath> #include <cstdio&g ...

  2. 【DevOps】DevOps成功的八大炫酷工具

    为自动化和分析所设计的软件及服务正加速devops改革的步伐,本文为你盘点了Devops成功的八大炫酷工具 Devops凭借其连接弥合开发与运营团队的能力正在各个行业呈现席卷之势.开发人员和运营人员历 ...

  3. jstl catch if choose标签

    catch标签: catch标签用来处理异常 属性: * var :用来出现异常保存到的变量. 代码: <c:catch var="e"> <% int i = ...

  4. Hotaru's problem(hdu 5371)

    题意:给出一个数字串,询问最长的子串,满足以下要求:将子串平均分为三部分,一三部分相等,一二部分对衬. /* 在manachar的基础上,枚举回文串的中心,再找第三部分. */ #include< ...

  5. Xshell5连接虚拟机出现连Could not connect to '192.168.47.128' (port 22): Connection failed,解决办法

    该日记写于2016年11月28日.在用Xshell5连接ubuntu虚拟OS时一直连接不上.出现这种情况的原因可能很多,有像百度上面说的没有关闭linux的防火墙,没有启动linux的ssh服务.但这 ...

  6. tp框架之查询

    //数据访问        //造模型对象        $nation = D("Nation");                //查询        //$a = $nat ...

  7. sqlserver索引小结

    1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书 ...

  8. Select查询执行顺序

    链接:http://blog.jobbole.com/55086/ 很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语 ...

  9. MVC学习笔记----缓存

    http://www.cnblogs.com/darrenji/p/3683306.html   视图缓存 http://www.cnblogs.com/darrenji/p/3649994.html ...

  10. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...