【js基础】js事件对象学习笔记
来源:互联网 发布:asp通用查询系统源码 编辑:程序博客网 时间:2024/05/25 08:13
DOM中的事件对象
event对象的相关属性
说明
在事件处理程序的内部,对象this始终等于currentTarget,而target则为事件的实际目标(即此刻鼠标下的对象);
eg:测试点这里
<div id="mydiv"> <button id="mybtn">点我</button> </div>
var d=document.getElementById("mydiv"); var btn=document.getElementById("mybtn"); var handler=function(){ // console.log(event); alert(event.currentTarget===this); alert(event.target===this); // event.stopImmediatePropagation(); } // //不一定按照代码的顺序执行,按冒泡或捕获顺序执行 d.addEventListener("click",handler,true); btn.addEventListener("click",handler,true); //捕获 点按钮 result:true false true true //冒泡 点按钮 result:true true true false
通过一个函数处理多个事件,用type属性:
var handler=function(event){ switch(event.type){ case "click":{ alert("hello world"); break; } case "mouseover":{ // console.log(event.target); event.currentTarget.style.backgroundColor="red"; break; } case "mouseleave":{ event.currentTarget.style.backgroundColor="pink"; break; } } } d.addEventListener("click",handler,false); d.addEventListener("mouseover",handler,false); d.addEventListener("mouseleave",handler,false);
JS高级程序设计中用得是event.target 我个人觉得这样不好,我们再给对象调用addEventListener函数时,当然希望我们handler处理的是对象本身,而不是实际的鼠标下的对象。特别的,在处理事件的捕获和冒泡时,event.target会特别乱。
看这样一个例子:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>js2</title><style> div{ width:300px; height:300px; background-color:blue; } button{ /*position: relative; top:100px; left:100px;*/ cursor: pointer; }</style> </head><body> <div id="mydiv"> <button id="mybtn">点我</button> </div> <script> var d=document.getElementById("mydiv"); var btn=document.getElementById("mybtn"); var handler=function(event){ switch(event.type){ case "click":{ alert("hello world"); break; } case "mouseover":{ // console.log(event.target); event.currentTarget.style.backgroundColor="red"; break; } case "mouseleave":{ event.currentTarget.style.backgroundColor="pink"; break; } } } d.addEventListener("click",handler,false); d.addEventListener("mouseover",handler,false); d.addEventListener("mouseleave",handler,false); </script></body></html>
测试点这里
IE中的事件对象
跨浏览器的事件对象
(取自js高级程序设计第三版)
var EventUtil={ addhandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent("on"+type,handler); }else{ element["on"+type]=handler; } }, removehandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if((element.detachEvent){ element.detachEvent("on"+type,handler); }else{ element["on"+type]=null; } }, getEvent:function(event){ return event?event:window.event; }, getTarget:function(event){ return event.target || event.srcElement; }, preventDefault:function(event){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue=false; } }, stopPropagation:function(event){//只能阻止事件冒泡 if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } } };
阅读全文
0 0
- 【js基础】js事件对象学习笔记
- js笔记4-事件基础
- js基础学习笔记
- JS基础学习笔记
- JS基础学习笔记
- js学习笔记:事件——事件流、事件处理程序、事件对象
- JS学习笔记-事件绑定
- 2016.4.18(js—对象基础学习笔记)
- 【学习笔记八】- JS 冒泡与捕获(事件流+事件处理程序+事件对象)
- JS基础——事件对象event
- JS基础——事件对象event
- js--事件--事件对象
- js--事件--事件对象
- JS 学习笔记--Object对象
- 【js学习笔记-027】-- 对象
- js内置对象 学习笔记
- 【JS学习笔记】内置对象
- js面向对象学习笔记
- 第二章 selenium动态网页请求和模拟jobbole登陆
- JDBC无封装下的标准代码和JDBC问题总结-V1.0
- web学习笔记19-静态代理,动态代理,spring AOP
- java OutOfMemoryError异常
- ch3 栈和队列
- 【js基础】js事件对象学习笔记
- 排序算法之选择排序
- 机器学习笔记(五)----神经网络的学习(Neural Networks: Learning)
- [BZOJ4945][NOI2017]游戏(2-SAT)
- mybatis where 条件为list集合处理
- iOS学习笔记-093.彩票08——发现和全部采种
- echo alexa 中国使用指南
- Hadoop基础教程-第12章 Hive:进阶(12.2 自定义函数)(草稿)
- 开灯(水题测试2017082501&洛谷1876)