之前的模块代码太死板了,由于内部定义了控件的ID,使用起来很不方便,so-----直接看代码

<script>
var move =(function(){
function drop(bar,target){
var target=document.getElementById(target),bar=document.getElementById(bar);
bar.onmousedown=drag;
function drag(event){
event=event||window.event;
var ox=event.clientX-target.offsetLeft,oy=event.clientY-target.offsetTop;
document.onmousemove=function(event){
event=event||window.event;
var oh=document.documentElement.clientHeight,ow=document.documentElement.clientWidth,
maxy=oh-target.offsetHeight,maxx=ow-target.offsetWidth;
var x=event.clientX-ox,y=event.clientY-oy;
if(x<0)x=0;
else if(x>maxx)x=maxx;
if(y<0)y=0;
else if(y>maxy)y=maxy;
target.style.left=x+"px";
target.style.top=y+"px";
};
document.onmouseup=function(){
document.onmousemove=null;
document.onmouseup=null;
};
}
}
return{
go:drop
}
})();
</script>

乍一看,与之前的区别就是双引号放在模块里面和模块外面的区别;

看这里:getElementByID(”bar”)和getElementByID(bar);

前者只能获得ID名为#bar的控件,而后者可以获得任意ID名的控件(你想传啥就传啥,传不进来算我输!);

所以,优化之后的模块适用于任意控件的拖拽;

统一方法:move.go("获得鼠标点击事件的控件ID","你想移动的控件ID");

例如我定义了两个控件ID:div1和div2---方法:move.go("div1","div2"),

至此,over!

小贴士:被移动的控件必须position:absolute;这个和模块无关,属于常识TT

拖拽模块move2的更多相关文章

  1. react之每日一更(实现canvas拖拽,增、删、改拖拽模块大小功能)

    效果图: import React, { Component } from 'react'; import scaleImage from './images/scale.png'; import c ...

  2. 拖拽模块move1

    刚开的博客,想着写点什么,以前写过拖拽函数,后来又学习了模块化,于是一直想把之前写的拖拽函数封成一个独立的模块,方便以后调用,说干就干,下面码代码... <script> var move ...

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

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

  4. JS利用 Sea.js 实现模块化:拖拽、缩放及范围限制

    知识点总结: Sea.js的使用:define.export.seajs.use.require等方法:   参考:http://seajs.org/docs/ Sea.js与require.js的区 ...

  5. wordpress模块无法拖拽/显示选项点击无反应

    问题:wordpress模块无法拖拽/显示选项点击无反应,还有编辑器的全屏什么的都用不了,按F12查看了console,提示很多jQuery is not defined... 解决方法:把wp-in ...

  6. jquery 模块拖拽

    这是模块拖拽Javascript代码 $(function(){ var _move=false;//移动标记 var _x,_y;//鼠标离控件左上角的相对位置 $(".drag" ...

  7. JS实现多Div模块拖拽功能

    空闲时间,同事让帮忙整个JS拖拽div模块功能.于是便在网上搜索,总结如下一个可实现多div模块拖拽的功能.一下是整体的HTML代码, 里边可以控制到 拖拽开始(onStart),拖拽时候(onMov ...

  8. selenium中各个模块操作:下拉框、鼠标悬浮连贯、拼图拖拽操作、以及其他拖拽操作、连线操作

    1.下拉框的修改操作 方法一:定位到元素后,通过select选择对应的值 方法二:通过两次点击的方法:没有select的value属性时,采用click两次的方法去选择: click第一次后,出现下拉 ...

  9. vue模块拖拽效果

    正巧在之前面试中遇到问实现拖拽效果 当时面试的时候简单回答了实现的方式与逻辑. 现在闲来无事,把这个东西实现了一下. 原理很简单,写的很方便. 数据驱动,建立一个数组,数组初始长度为1 拖动触发时,添 ...

随机推荐

  1. iOS中 用FMDB封装一个SQLite数据库

    建立一个单例: DataBaseHandle.h #import <Foundation/Foundation.h> @class PersonModel; @class FMDataba ...

  2. Linux 句柄是什么 ?

    1.句柄就是一个标识符,只要获得对象的句柄,我们就可以对对象进行任意的操作. 2.句柄不是指针,操作系统用句柄可以找到一块内存,这个句柄可能是标识符,map的key,也可能是指针,看操作系统怎么处理的 ...

  3. Visual Studio 2010多线程编程

    随着处理数据量的逐渐增大,串行单核的程序,犹如残灯缺月,无法满足运用需求.大规模集群的出现,解决了这一技术难题.本文旨在探讨如何使用多CPU并行编程,关于CUDA的并行前面文章已有讲述.本文结构分为三 ...

  4. 一键安装gitlab7在rehl6.4上

    一键安装gitlab7在rehl6.4上 参考原文: http://blog.csdn.net/ubuntu64fan/article/details/38367579 1 关于gitlab7 无论如 ...

  5. 【一天一道LeetCode】#29. Divide Two Integers

    一天一道LeetCode系列 (一)题目 Divide two integers without using multiplication, division and mod operator. If ...

  6. cat .git/config查看远端服务器信息(git的配置信息:远端服务器连接信息)

    本地git库中,查找其连接的远端服务器信息: 每个git库都会有一个配置信息文件.git/config. cat .git/config,可以看到信息如下: [core]         reposi ...

  7. mysql进阶(十三)命令行导出导入数据库

    MySQL命令行导出导入数据库 MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd D:\Program Files\ ...

  8. Java-ServletContextAttributeListener

    /** Implementations of this interface receive notifications of ** changes to the attribute list on t ...

  9. OAF隐藏显示题头

    当一个页面的内容较多时,我们需要将内容进行分组显示.这个时候我们就需要用到隐藏显示. 本文将介绍如何使用OAF的隐藏显示题头功能 一.新建AM 在test.oracle.apps.cux上点右键,选择 ...

  10. 【Python】模拟radius coa报文

    Radius协议中网关设备NAS是client,实现radius协议的服务为服务端(例如freeradius),这种情况下radius server并不能主动给NAS发送信息.在 rfc3576 Dy ...