JavaScript 事件处理详解
事件绑定与解绑:
el.onEventName = function (){}
document.getElementById("dom").onclick = function(){ } //绑定事件
document.getElementById("dom").onclick = null; //移除绑定
dom0级事件,也就是最早期js处理事件的方式。事件绑定写法比较简单,但是有个致命的缺点,只能给一个元素的某一个行为绑定一次方法,第二次绑定的会把前面的覆盖掉。
document.getElementById("dom").onclick = function(){
console.log("click"); //无法输出
}
document.getElementById("dom").onmouseover = function(){
console.log("mouseover"); //可以输出
}
如上,触发 onclick 这个事件将不会任何反馈;
事件监听与移除监听:
el.addEventListener("EventName",function(){},false); 注:第一个参数:事件名;第二个参数:事件回调,第三个参数:表示是在事件捕获(true)或事件冒泡阶段(false) 触发,默认false
dom2级事件,js规范更新后,提出的另一种事件处理方案,通过addEventListener方法去监听某个元素上的事件是否被触发,解决了多次绑定被覆盖的问题
document.getElementById("dom").addEventListener("click",function(){
console.log("click1"); //输出
});
document.getElementById("dom").addEventListener("click",function(){
console.log("click2"); //输出
});
removeEventListener 移除监听 ,注意,如果addEventListener 第二个参数是匿名函数, removeEventListener无法移除,如下
错误示范:
document.getElementById("dom").addEventListener("click",function(){});
document.getElementById("dom").removeEventListener("click",function(){})
正确示范:
function eventcallback(){
}
document.getElementById("dom").addEventListener("click",eventcallback);
document.getElementById("dom").removeEventListener("click",eventcallback);
缺点:IE9以下addEventListener /removeEventListener不兼容
既来之,则安之!
IE6~8 用 attachEvent/detachEvent
el.attrachEvent("onEventName",function(){ }); 如:
el.attachEvent('onclick',function(){{});
detachEvent 移除事件 同removeEventListener 一样,无法移除 带匿名函数的事件
正确示范:
function eventcallback(){
}
document.getElementById("dom").attachEvent("onclick",eventcallback);
document.getElementById("dom").detachEvent("onclick",eventcallback);
如何去兼容所有浏览器:
function addEvent(el, eventName, fn, useCapture)
{
if (el.addEventListener)
{
// Dom2
el.addEventListener(eventName, fn, useCapture);
return true;
}
else if (el.attachEvent)
{
// IE6~8
var r = el.attachEvent('on' + eventName, fn);
return r;
}
else
{
// Dom0
el['on' + eventName] = fn;
}
}
(php开发,web前端,ui设计,vr开发专业培训机构,v客学院版权所有,转载请注明出路,谢谢!!!)
JavaScript 事件处理详解的更多相关文章
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- JavaScript事件详解-zepto的事件实现
zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...
- javascript 函数详解2 -- arguments
今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascrip ...
- [原创]JavaScript继承详解
原文链接:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ...
- iOS开发——实用技术OC篇&事件处理详解
事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType type; @property(nonatomic ...
- javaScript基础详解(1)
javaScript基础详解 首先讲javaScript的摆放位置:<script> 与 </script> 可以放在head和body之间,也可以body中或者head中 J ...
随机推荐
- 开发VS2008 AddIn 入门Sample
本文主要介绍的是VS2008插件开发 环境要求:VS2008:.Net3.5 目标:开发插件功能为“在VS中创建文本文档,并在文本开头输入//This code was created For Tes ...
- 第十三篇:K-Means 聚类算法原理分析与代码实现
前言 在前面的文章中,涉及到的机器学习算法均为监督学习算法. 所谓监督学习,就是有训练过程的学习.再确切点,就是有 "分类标签集" 的学习. 现在开始,将进入到非监督学习领域.从经 ...
- 1808:公共子序列 即POJ 1458 Common Subsequence
1808:公共子序列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 我们称序列Z = < z1, z2, ..., zk >是序列X = < ...
- 170329、用 Maven 部署 war 包到远程 Tomcat 服务器
过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们 ...
- sql语句中left join、right join 以及inner join之间的使用与区别
sql语句中left join.right join 以及innerjoin之间的使用与区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join( ...
- HQL的检索方式
HQL是面向持久化类的,所以需要查询表的字段都要用持久化类指定例如 String hql = "SELECT e.email, e.salary, e.dept FROM Employee ...
- Python实现HMM(隐马尔可夫模型)
1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...
- MySQL和时间戳有关的函数
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()mysql> select current_timestamp, current ...
- 前端开发 - HTML
1.index2.head标签相关内容3.常用标签一4.常用标签二 table5.常用标签二 form6.标签分类 1.index <!--声明文档的类型 标记该文档为HTML5的文件--> ...
- 持续集成之戏说Check-in Dance(转)
add by zhj: 先说一下持续集成的定义,这是ThoughtWorks首席科学家Martin Fowler在<持续集成>第二版中给出的,“持续集成是一种软件开发实践.在持续集成中,团 ...