知识大全 js实现拖拽 闭包函数详细介绍

Posted 事件

篇首语:宁给好汉拉马,不给懒汉作爷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 js实现拖拽 闭包函数详细介绍相关的知识,希望对你有一定的参考价值。

  js拖拽

  采用简单的闭包实现方式

  代码如下:

  /**

  * Created with JetBrains WebStorm

  * User: lsj

  * Date:

  * Time: 下午 :

  * To change this template use File | Settings | File Templates

  */

  var dragmanager=(function()

  

  //标识移动元素z轴坐标

  var index_z= ;

  //当前的拖拽元素

  var drganow;

  //移动标识符号

  var dragbegin=false;

  //鼠标点击时距离div左边距离

  var relativex= ;

  //鼠标点击时距离div上边距离

  var relativey= ;

  //标识鼠标是否移出

  var isout=false;

  return

  /**

  * 为document绑定鼠标提起事件 主要防止鼠标移动过快跳出el区域

  */

  bingDocOnMouseUp:function()

  

  //注册全局的onmouseup事件 主要防止鼠标移动过快导致鼠标和el不同步

  document onmouseup=function(e)

  

  var ev = window event || e;

  if(isout && dragbegin)

  

  //改变div的相对位置

  drganow style left= (ev clientX relativex)+ px ;

  drganow style top=(ev clientY relativey)+ px ;

  drganow style cursor= normal ;

  dragbegin=false;

  isout=false;

  

  

  

  /**

  * 将注入的元素绑定事件

  * @param el

  */

  registerElementEv:function(element)

  

  element onmousedown=function(e)

  

  var ev = window event || e;

  var clientx=ev clientX;

  var clienty= ev clientY;

  var left= parseInt(this style left substring( this style left indexOf("p")));

  var top= parseInt(this style top substring( this style top indexOf("p")));

  relativex=clientx left;

  relativey=clienty top;

  index_z++;

  this style zIndex=index_z;

  drganow=this;

  dragbegin=true;

  

  element onmousemove=function(e)

  

  var ev = window event || e;

  //开始拖拽

  if(dragbegin)

  

  //改变div的相对位置

  this style left= (ev clientX relativex)+ px ;

  this style top=(ev clientY relativey)+ px ;

  this style cursor= move ;

  

  

  element onmouseout=function(e)

  

  isout=true;

  

  element onmouseup=function(e)

  

  var ev = window event || e;

  if(dragbegin)

  

  //改变div的相对位置

  drganow style left= (ev clientX relativex)+ px ;

  drganow style top=(ev clientY relativey)+ px ;

  drganow style cursor= normal ;

  dragbegin=false;

  

  

  

  

  )();

   采用闭包的形式实现 方便后期的维护 将移动过程所需的变量全部转移进gridmanager里面

   拖拽过程中 鼠标移动过快导致移动元素跟不上鼠标的移动 所以要注册document oumouseup事件 该事件的开关是有移动元素的onmouseout事件触发的

cha138/Article/program/Java/JSP/201311/20315

相关参考

知识大全 js函数setTimeout延迟执行的简单介绍

js函数setTimeout延迟执行的简单介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!设置指

知识大全 js函数排序的实例代码

这篇文章介绍了js函数排序的代码有需要的朋友可以参考一下 复制代码代码如下:varas=[];assort();//这个排序是按照字典排序//自定义按照数字排序functionsortByN

知识大全 js中parseInt函数浅谈

js中parseInt函数浅谈  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文章介绍了Js中的

知识大全 在js中function()是什么意思

在js中function()是什么意思?一般是什么情况下用?新手求大神详细解释谢谢!function()是JS函数,类似于java中的方法,C中的函数<inputtype="button"onc

知识大全 基于javascript 闭包基础分享

  如果对作用域函数为独立的对象这样的基本概念理解较好的话理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感在DOM的事件处理方面大多数程序员甚至自己已经在使用闭包了而不自知在这种情况下对于浏览

知识大全 JS特殊函数(Function()构造函数、函数直接量)区别

JS特殊函数(Function()构造函数、函数直接量)区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 JavaScript的模块化:封装(闭包),继承(原型) 介绍

JavaScript的模块化:封装(闭包),继承(原型)介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 jquery实现简单的拖拽效果实例兼容所有主流浏览器

  js代码:funjs复制代码代码如下:_MoveObj=null;//全部变量用来表示当前divz_index=;//z方向jQueryfnmyDrag=function()_IsMove=;//

知识大全 JQuery-tableDnD 拖拽的基本使用介绍

JQuery-tableDnD拖拽的基本使用介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇

知识大全 JS中产生固定结果函数的优化

JS中产生固定结果函数的优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  适用的函数应该要满足