最近学东西学的有点太散了,歇一阵子,重新完善之前的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. tornado 重定向404(方法不对)

    application = tornado.web.Application(url_wrapper([ (r"", include('app.views.web_services. ...

  2. 启动apache和tomcat端口被占用解决办法

    1,打开控制台,使用命令 netstat -aon|findstr 8090  找出端口被占用的进程, 2,使用 taskkill -f -pid 4116(进程id)杀掉当前占用端口的进程

  3. html5 form表单常用标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Sublime Text永久设置使用4个空格缩进

    Sublime Text是一款轻量高效的代码编辑器,官网地址是:http://www.sublimetext.com/,默认情况下sublime是使用tab进行缩进,如果手动敲空格是比较麻烦的,并且很 ...

  5. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  6. ASP.NET MVC随想录——漫谈OWIN

    什么是OWIN OWIN是Open Web Server Interface for .NET的首字母缩写,他的定义如下: OWIN在.NET Web Servers与Web Application之 ...

  7. mysql状态取反(0变1,1变0)

    如果要改变status状态 update   table_name   status=ABS(status-1);   //取绝对值 则0-->1   1-->0

  8. DataTable select根据条件取值

    1.封装独立方法 // 执行DataTable中的查询返回新的DataTable /// </summary> /// <param name="dt">源 ...

  9. 【MongoDB】C#中的Mongo数据类型转换

    用过Mongo的人都知道,Mongo使用的是Bson类型,有string,int,date,bool等数据类型,具体就不详述了. 在使用Mongo 的C#官方驱动时会碰到一个问题,如何将Bson中的数 ...

  10. HDU 5769 Substring 后缀数组

    Substring Problem Description ?? is practicing his program skill, and now he is given a string, he h ...