js拖拽的原型声明和用法总结


Posted in Javascript onApril 04, 2016

下面是自己写的一个关于js的拖拽的原型声明:代码如下

需要注意的问题包括:

1.this的指向到底是指向谁--弄清楚所指的对象

2.call()方法的使用

3.直接将父级原型赋给子级与使用for将其赋给子级有什么区别?

比如:

for(var i in Drag.prototype)
{
  LimitDrag.prototype[i]=Drag.prototype[i];----------子级发生改变,其父级并不会受到影响
}

 LimitDrag.prototype=Drag.prototype;---------直接将原型赋给子级,会导致当子级发生改变时,其父级也会随之而改变。

代码如下

<html>
<head>
<style>
#div1 {width:100px; height:100px; background:red; position:absolute;}
#div2 {width:100px; height:100px; background:yellow; position:absolute;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>拖拽--面向对象</title>
<script>
window.onload=function()
{
  new Drag('div1');
  new LimitDrag('div2');
}
function Drag(id)
{
   var _this=this;//这个this表示p1
   this.disx=0;
   this.disy=0;
   this.oDiv=document.getElementById(id);
   this.oDiv.onmousedown=function(ev){//按下的时候有个事件,传递给下面的事件
    _this.fnDown(ev);
    return false;
   }
}; 
Drag.prototype.fnDown=function(ev)
{
    var _this=this;
    var oEvent=ev||event;
    this.disx=oEvent.clientX-this.oDiv.offsetLeft;
    this.disy=oEvent.clientY-this.oDiv.offsetTop;
    document.onmousemove=function(ev){//移动的时候有个事件
       _this.fnMove(ev);
    }
    document.onmouseup=function(){
       _this.fnUp();
    }
}; 
 Drag.prototype.fnMove=function(ev)
{
      var oEvent=ev||event;
      this.oDiv.style.left=oEvent.clientX-this.disx+'px';
      this.oDiv.style.top=oEvent.clientY-this.disy+'px';
};
Drag.prototype.fnUp=function()
{
     document.onmousemove=null;
     document.onmouseup=null;
};
//继承Drag的所有属性
function LimitDrag(id)
{
    Drag.call(this,id);//这个this指LimitDrag new的对象
}
//得到Drag的方法,遍历其原型
for(var i in Drag.prototype)
{
  LimitDrag.prototype[i]=Drag.prototype[i];
}
//改变Drag的fnMove的方法
LimitDrag.prototype.fnMove=function(ev)
{
  var oEvent=ev||event;
  var l=oEvent.clientX-this.disx;
  var t=oEvent.clientY-this.disy;
  if(l>document.documentElement.clientWidth-this.oDiv.offsetWidth)
  {
    l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
  }
  else if(l<0)
  {
    l=0;
  }
   if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight)
  {
    t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
  }
  else if(t<0)
  {
    t=0;
  }
   this.oDiv.style.left=l+'px';
   this.oDiv.style.top=t+'px';
}
</script>
</head>
<body>
<div id="div1">
</div>
<div id="div2">
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
Nov 04 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
有关Promises异步问题详解
Nov 13 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 #Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 #Javascript
javascript拖拽效果延伸学习
Apr 04 #Javascript
javascript事件委托的用法及其好处简析
Apr 04 #Javascript
基于javascript制作微博发布栏效果
Apr 04 #Javascript
纯js实现手风琴效果
Apr 17 #Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 #Javascript
You might like
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python import自定义模块方法
2015/02/12 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Python单元测试实例详解
2018/05/25 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
10个示例带你掌握python中的元组
2020/11/23 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
销售总经理岗位职责
2014/03/15 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
公司费用报销管理制度
2015/08/04 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python