事件监听addEventListener()和removeEventListener() ---------1
一直想写一个原生事件监听的记录,方便以后看,不愿意写主要是事件监听的单词太长,记起来好难记每次都要查,这次把知道的写完了,来这里查好了,以后要是理解的更透彻了,就再补全好了
首先,DOM0级事件和DOM2级事件
给一个元素添加事件有三种方法
HTML
<input type="button" value='button1' id='btn1' />
<input type="button" value='button2' id='btn2' />
<input type="button" value='button3' id='btn3' onclick="alert('我是btn3')" />
对于btn3的按钮,事件是直接加到元素标签内的,好像叫html事件,缺点就是没有分离吧
DOM0级事件
//添加事件
var btn1=document.getElementById('btn1');
btn1.onclick=function(){
alert('我是btn1')
}
//解除事件
btn1.onclick=null;
直接取到btn1,给他添加conclick事件,缺点只能添加一个事件,如果再添加,会覆盖第一个事件
DOM2级事件
//添加事件
var btn2=document.getElementById('btn2');
function box(){alert('我是btn2');}
btn2.addEventListener('click',box,false);
//解除事件
btn2.removeEventListener('click',box,false);
添加事件用 addEventListener(什么事件、做什么事、false); false好像是事件冒泡阶段 对应的 true事件捕获阶段,一般我这种菜鸟用不到true,没试过,反正一律写false
删除事件用 removeEventListener(什么事件、做什么事、false);
ps:添加事件和删除事件,必须和添加的时候相同才能移除,不然清不掉。
好像挺简单,真的要是这样就好了,这个addEventListener和removeEventListener有兼容问题,好像是IE8以下不好使,所以还有另外的单词要记
attachEvent 和 detachEvent,这个好像是IE专属,
用法
//添加事件
var btn2=document.getElementById('btn2');
function box(){alert('我是btn2');}
btn2.attachEvent('onclick',box);
//解除事件
btn2.detachEvent('onclick',box);
没有第三个参数是因为IE8以前只支持事件冒泡,另外需要记住,这里是onclick,所有的事件都要加on,低级的浏览器事比较多
好了,要记住这四个单词
addEventListener、removeEventListener、attachEvent、detachEvent
------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------------
要兼容所有浏览器,就做判断,谁有能力,谁做事
var btn2=document.getElementById('btn2');
function box(){alert('我是btn2');}
var eventUtil={
// 添加事件
addHandler:function(element,type,handler){ ////三个参数分别为元素、事件、做什么事(方法)
if(element.addEventListener){ //如果支持element.addEventListener方法就用addEventListener
element.addEventListener(type,handler,false);
}else if(element.attachEvent){ //如果支持element.attachEvent方法就用attachEvent
element.attachEvent('on'+type,handler);
}else{
element['on'+type]=handler; //如果都不支持,那就用DOM0级的方法
}
},
// 删除事件 //同上
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;
}
}
}
eventUtil.addHandler(btn2,'click',box);
eventUtil.removeHandler(btn2,'click',box);
封装了一个方法,以后可以直接拿过来用
事件监听addEventListener()和removeEventListener() ---------1的更多相关文章
- js事件监听-addEventListener (w3c标准) 和 attachEvent(ie)
研究了一个小时,没看懂这两个属性 window.onload = function(){ var oDiv = document.getElementById("J_myDiv") ...
- [转]addEventListener() 方法,事件监听
转载 白杨-M http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件监听 你可以使用 remov ...
- addEventListener() 方法,事件监听
知识点1:addEventListener() 方法,事件监听,可以使用 removeEventListener() 方法来移除事件的监听. 语法 element.addEventListener(e ...
- addEventListener() 方法,事件监听(去哪儿网用到过)
addEventListener() 方法,事件监听 你可以使用 removeEventListener() 方法来移除事件的监听. 语法 element.addEventListener(event ...
- JS常用方法(获取Class、获取元素样式、事件监听、cookie、ajax等)
var Util = {}; Util.byClass = function (oClass) {//全局获取 var tags = document.all ? document.all : doc ...
- html屏幕旋转事件监听
近期做微信服务号开发,在做图片展示的时候需要横竖屏的检测实现图片大小不同的展示. 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋). 摘自:http://bbs.phonegap10 ...
- [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】
1.添加时间监听: Chrom中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target ...
- 记一次使用 removeEventListener 移除事件监听失败的经历
测试一 测试代码如下 var Test = function() { this.element = document.body; this.handler = function() { console ...
- JavaScript事件监听以及addEventListener参数分析
事件监听 在Javascript中事件的监听是用来对某些操作做出反应的方法.例如监听一个按钮的pressdown, 或者获取鼠标左键按下时候鼠标的位置.这些都需要使用监听来完成.监听的函数很简单:ad ...
随机推荐
- P1090 合并果子
#include <bits/stdc++.h> using namespace std; const int maxn = 10005; int main(int argc, char ...
- Java:按值传递还是按引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有 ...
- springMVC配置文件spring-servlet.xml中<mvc:annotation-driven />的意义
<mvc:annotation-driven/>标签,对应的实现类是org.springframework.web.servlet.config.AnnotationDrivenBeanD ...
- activitydialog
给Activity设置Dialog属性,点击区域外消失:,activitydialog 1.在AndroidManifest.xml中给Activity设置样式: <activity ...
- 算导Ch34. NP Complete
1.图灵停机问题:无论在多长时间内都无法被任何一台计算机解决 问题描述:问题为H,H的输入数据为P(P是一段程序(程序也是一串字符串数据)),判定P在输入w下是否能够最终停止 H(P(w))=0 若P ...
- HBase的完全分布式的搭建与部署,以及多master
一:前提准备 1.设置时间同步 2.清空logs,datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start ...
- 框架,公共模块,unified思想
最近两周一直在加班加点refactor代码,贡献了2014年最后一个周末和2015年元旦三天假期,终于赶在了sprint结束之前完成. 可见,这个sprint做的并不理想! 项目逻辑本身并不复杂,从数 ...
- Fiddler-004-配置过滤器之-域名过滤
前文讲述了通过 Fiddler 进行网络抓包的一个小实例,具体敬请参阅博文: 有些细心的小主可能发现了,我们捕获的 HTTP请求 中有一些请求不是我们需要的,而是一些非必要数据,页面如下图所示:
- 文明3地图之二-大n型地图
存档文件:http://files.cnblogs.com/files/xiandedanteng/civ3bigN20160214.rar 地图: 简介: 这份地图几乎没有岛屿,整块大陆都连在一起像 ...
- JS操作cookie以及本地存储(sessionStorage 和 localStorage )
JS操作cookie cookie的操作用两种方式 1.substring //创建cookie function setCookie(name,value,expires,path,domain,s ...