转换学开发,代码100天——2018-05-06

今天学习JavaScript的绑定事件。因为浏览器的原因绑定事件需要考虑兼容性问题。

attachEvent     IE浏览器 ,ie9以上事件执行顺序与绑定顺序相同;ie9以下事件执行顺序与绑定顺序相反

btn.attachEvent("onclick",function(){
   alert("a");
});

detachEvent

btn.detachEvernt("onclick",function(){
   alert("a");
});

addEventListener FF及chrome浏览器

btn.addEventListener("click",function(){
     alert("a");
});

removeEventListener

btn.renoveEventListener("onclick",function(){
   alert("a");
});

如对一个按钮添加多个事件:

<script type="text/javascript">
window.onload = function(){
var btn = document.getElementById("btn");
addMyEvent(btn,"click",function()
{
alert("a");
});
addMyEvent(btn,"click",function()
{
alert("b");
});
} function addMyEvent(obj,ev,fn){
if (obj.attachEvent) {
obj.attachEvent("on"+ev,fn);
}
else{
obj.addEventListener(ev,fn);
}
}
</script>

补充:将上一篇文章中的拖拽事件改成线框拖拽效果

按下鼠标,拖动物体时:

松开鼠标后:

<!DOCTYPE html>
<html>
<head>
<title>javascript 拖拽</title>
<style type="text/css">
#div1{
width: 100px;
height: 100px;
background: red;
position: absolute;
}
.Box{
border: 1px dashed black;
position: absolute;
}
</style> <script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById("div1");
var disX =0;
var disY =0;
oDiv.onmousedown = function(ev){
//创建虚线框
var oBox = document.createElement("div");
oBox.className = "Box";
oBox.style.width = oDiv.offsetWidth+"px";
oBox.style.height = oDiv.offsetHeight+"px";
oBox.style.left = oDiv.offsetLeft+"px";
oBox.style.top = oDiv.offsetTop+"px";
document.body.appendChild(oBox); var oEvent = ev||event;
disX = oEvent.clientX-oDiv.offsetLeft;
disY = oEvent.clientY-oDiv.offsetTop;
if (oDiv.setCapture) {
//鼠标移动事件
oDiv.onmousemove = mouseMove;
oDiv.onmouseup = mouseUp;
oDiv.setCapture();//ie专用
return false;
}else{
//鼠标移动
document.onmousemove =mouseMove;
document.onmouseup = mouseUp;
return false;
}
//鼠标按下事件
function mouseMove(ev){
var oEvent = ev||event;
var l = oEvent.clientX-disX;
var t = oEvent.clientY-disY;
oBox.style.left = l+"px";
oBox.style.top = t+"px";
};
//鼠标抬起事件
function mouseUp()
{
this.onmousemove = null;
this.onmouseup = null;
if (this.setCapture)
{
this.releaseCapture();//ie专用
}
oDiv.style.left = oBox.offsetLeft+"px";
oDiv.style.top = oBox.offsetTop+"px";
document.body.removeChild(oBox);
};
};
}
</script>

</head>
<body>
<div id="div1"></div>
</body>
</html>

day51—JavaScript绑定事件的更多相关文章

  1. JavaScript绑定事件的方法[3种]

    在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HT ...

  2. Javascript绑定事件的两种方式的区别

    命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...

  3. javascript绑定事件

    本质:不同的库或者工具中总是封装了不同的事件绑定形式,但是究其根源,还是IE事件模型和W3C事件模型不同的处理方式 1)W3C事件模型:支持事件捕捉和冒泡 addEventListener('type ...

  4. javascript绑定事件addEventListener与attachEvent

    1.eleObj.addEventListener(eventName,handle,useCapture); eleObj:DOM元素: eventName:事件名称.注意,这里的事件名称没有“ o ...

  5. JavaScript 绑定事件时传递数据

    var data = { name: 'Ruchee', email: 'my@ruchee.com' }; data.handleEvent = function (e) { console.log ...

  6. javaScript绑定事件委托 demo

    事件绑定通常发生在 onload 或 DOMContentReady , 事件绑定占用 处理时间 占用内存, 而且不是每个事件都会被 点击执行. 由此 事件委托 可以优化事件绑定行为.. 事件逐层冒泡 ...

  7. JavaScript中事件绑定的方法总结

    最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...

  8. JavaScript中绑定事件监听函数的通用方法addEvent() 和 事件绑定之bindEvent()与 unBindEvent()函数

    下面绑定事件的代码,进行了兼容性处理,能够被所有浏览器支持: function addEvent(obj,type,handle){ try{ // Chrome.FireFox.Opera.Safa ...

  9. javascript对象事件绑定方法

    javascript对象事件绑定方法 今天在做对象事件绑定的过程中出现了一点异外情况,由于事件方法是由参数传过来的,需要将当前对象call过去,方便方法体里直接调用this 错误写法 obj.oncl ...

随机推荐

  1. python中session的使用

  2. spark复习笔记(1)

    使用spark实现work count ---------------------------------------------------- (1)用sc.textFile(" &quo ...

  3. Servlet实现Cookie自动登录,并显示保存的用户信息

    转自:https://blog.csdn.net/qq_29612963/article/details/51100565

  4. <input type="radio">单选按钮

    转自:http://www.divcss5.com/html/h490.shtml1 <form> 男性: <input type="radio" checked ...

  5. java上传文件-大文件以二进制保存到数据库

    转自:https://blog.csdn.net/qq_29631069/article/details/70054201 1 一.创建表 oracle: create table baoxianda ...

  6. __bridge

    Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举 ...

  7. wpf textbox ctrl+enter事件

    <TextBox x:Name="xcontent" Text="sfasdf" Grid.Row="0" AcceptsReturn ...

  8. apachectl 命令详解-graceful 不中断原有连接,重新启动 Apache 服务器

    apachectl(Apache control interface) 参         数: fullstatus     显示服务器完整的状态信息. graceful     重新启动 Apac ...

  9. 14.Linux-CentOS系统proc文件系统丢失

    问题: 在强制卸载根目录下的磁盘,导致/proc文件系统丢失. 解决: 重启服务器重新生成.

  10. linux常用的小命令

    查看linux版本 uname -a 图上可知,linux内核版本为2.6.32 查看cpu核数 cat /proc/cpuinfo |grep "cores"| uniq 系统中 ...