JS-事件心得
写在前面的话:就我目前的水平来看,这两种方法不能一起使用,用on添加的事件removeEventListener()没办法删除,反之一样
注册事件的两种方式:
on+事件名称
addEventListener()事件监听器
- 假设事件源是获取到的button节点的btn,为btn注册一个点击事件: btn.addEventListener("click",fn); //第一个参数是事件名称,没有on,第二个是执行的函数体
- 这种方法可以为一个节点注册多个事件 如上边的btn:
btn.addEventListener("click",fn1);
btn.addEventListener("click",fn2); - 在IE9前,用attachEvent()这个方法
- 因为在DOM2之后出来,所以需要考虑到兼容性的问题
<body>
<input type="button" value="一个神奇的按键">
<script>
var inp = document.getElementsByTagName('input')[0]; //事件的兼容性写法
EventListener = {
addEvent : function (ele,fn,str) {
if (ele.addEventListener) {
ele.addEventListener(str,fn);
}else if (ele.attachEvent) { //兼容IE678
ele.attachEvent("on" + str,fn);
}else { //DOM0时代,但当前的这种写法只是示例,不够完善
ele["on" + str] = fn;
}
},
removeEvent : function (ele,fn,str) {
if (ele.removeEventListener) {
ele.removeEventListener(str,fn);
}else if (ele.detachEvent) {
ele.detachEvent("on" + str, fn);
}else {
ele["on" + str] = fn;
}
}
}
function fn() {
alert(1);
} var inp = document.getElementsByTagName('input')[0];
EventListener.addEvent(inp,fn,"click");//添加事件
EventListener.removeEvent(inp,fn,"click");//移除事件
</script>
JS-事件心得的更多相关文章
- 微信小程序js学习心得体会
微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- 什么是JS事件冒泡?
什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理 程序或者事件返回true,那么 ...
- js事件技巧方法整合
window.resizeTo(800,600); //js设置浏览器窗口尺寸 window.open (function(){ resizeTo(640,480);//设置浏览器窗口尺寸 moveT ...
- js事件浅析
js中关于DOM的操作很多,因此js事件机制也就尤为重要. 事件绑定形式: 一. 内联形式 耦合度高,不利于维护 <button onclick="alert('你点击了这个按钮'); ...
- js 事件大全
Js事件大全一般事件 事件 浏览器支持 描述onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick IE4|N4|O 鼠标双击事件onMouseDo ...
- 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别
一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...
- JS事件
JS事件: 声明:为了事件对象event跨浏览器兼容: var oEvent==ev||event; 所以在下面用到 event 的地方都用 oEvent 代替 1)doucument的 ...
- 原生js事件和jquery事件的执行顺序问题
场景:近日,写前端页面时候,在针对输入框input操作时,用到了jquery的插件,插件中使用了jquery的focus()和blur()方法.但是同时,又需要在插件之外再针对输入框的获取焦点和失去焦 ...
- 特殊js事件
1:点击enter事件 $(document).keypress(function(e) { // 回车键事件 if(e.which == 13) { submitForm(); } }); 2:JQ ...
随机推荐
- 如何查看Python对象的属性
在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...
- Unity3D架构设计NavMesh寻路
Unity3D架构设计NavMesh寻路 发表于2013年10月6日由陆泽西 国庆闲来没事把NavMesh巩固一下.以Unity3D引擎为例写一个底层c# NavMesh寻路.因为Unity3D中本身 ...
- js 表单序列化为json对象
$.fn.serializeJson = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () ...
- Python列表推导式
- https://www.oschina.net/project/zhlist/326/scripting 开源
1https://www.oschina.net/project/zhlist/326/scripting
- 初识Elasticsearch,bulk 操作的遇到的那些事
bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...
- 无线LoRa远传智能水表
无线远传智能水表是一款基于瑞萨芯片的水表,该水表具有电子计数.无线远传功能.欠费关阀等功能,无线水表具有的功能如下:无线通信采用SX1278的LoRa进行点对点通信,SX1278模块在通信中启用CAD ...
- Jmeter(十九) Md5加密操作之-------BeanShell PreProcessor(转载)
转载自 http://www.cnblogs.com/yangxia-test 背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码 ...
- jenkin、SVN、archery集成openLDAP
jenkins: 1.下载.安装插件 LDAP .Matrix Authorization Strategy 2. 系统管理 —> 全局安全配置 点击 启用安全,并且选择 LDAP 认证,这里有 ...
- sqoop2问题解决
sqoop:000> show version --serverException has occurred during processing command Exception: org.a ...