JS Dom事件绑定及解绑

news/2024/7/19 14:11:49 标签: js, javascript, dom

 1.行内式

            在标签中直接通过on+事件类型 属性 去绑定事件

  2.内联式

            (1)直接绑定匿名函数

            (2)先定义函数,再去绑定

 

  3.监听

            addEventListener

                语法:事件源.addEventListener("事件类型",事件处理函数);

                使用监听,可以给同一个事件类型绑定多个事件处理函数。

                多个事件处理函数执行顺序是按照绑定顺序来的

                先绑定先执行

                在IE低版本不支持

            attachEvent()

                IE低版本支持

                语法:事件源.attachEvent("on+事件类型",事件处理函数);

                多个事件处理函数的执行顺序是按照绑定顺序的倒序来的

                先绑定后执行

注册事件

eventTarget.addEventListener(type, listener[,useCapture])
  • evenTarget 表示要绑定事件的DOM元素

  • type 表示要绑定的事件,如:"click"

  • listener 表示要绑定的函数

  • useCapture 可选参数,表示是否捕获过程

NOTE:useCapture 为设定是否为捕获过程,默认事件均为冒泡过程,只有 useCapture 为 true 时才会启用捕获过程。

// 获取元素
var elem = document.getElemenyById('id');

// 事件处理函数
var clickHandler = function(event) {
  // statements
};

// 注册事件
elem.addEventListener('click', clickHandler, false);

// 第二种方式,不建议使用
elem.onclick = clickHandler;
// 或者来弥补只可触发一个处理函数的缺陷
elem.onclick = function(){
  clickHandler();
  func();
  // 其他处理函数
};

取消事件

eventTarget.removeEventListener(type, listener[,useCapture]);
  • evenTarget 表示要绑定事件的DOM元素

  • type 表示要绑定的事件,如:"click"

  • listener 表示要绑定的函数

  • useCapture 可选参数,表示是否捕获过程

// 获取元素
var elem = document.getElemenyById('id');

// 取消事件
elem.removeEventListener('click', clickHandler, false);

// 第二种方式。不建议使用
elem.onclick = null;

 

浏览器兼容型

以上均为 W3C定义的标准定义,但早期浏览器 IE8 及其以下版本,均没有采用标准的实现方式。不过这些低版本浏览器也提供了对于 DOM 事件的注册、取消以及触发的实现。

绑定兼容性写法:

 function f(event) {
            alert
        }
        // ele:触发事件的元素 type:事件类型 handler:事件处理函数
        function on(ele, type, handler) {
            if (ele.addEventListener) {
                ele.addEventListener(type, handler);
            } else {
                ele.attachEvent("on" + type, handler)
            }
        }

解除绑定兼容性写法:

 // ele:触发事件的元素 type:事件类型 handler:事件处理函数
        function j(ele, type, handler) {
            if (ele.removeEventlistener) {
                ele.removeEventlistener(type, handler);
            } else {
                ele.detachEvent("on" + type, handler)
            }
        }

 


http://www.niftyadmin.cn/n/1381205.html

相关文章

走着官方的教程入门Material Design(一)

又到期末了,学习下Google的材料设计。写下此文记录自己的同时,分享给需要的同学,若发现文中有什么问题和不对,欢迎指出 使用 Material Design 创建新应用 首先需要使用材料主题 如果是在5.0及以上的系统,可以直接使用材…

冰淇淋的爱音乐播放器

桂纶镁唱的冰淇淋的爱歌曲音乐播放器,希望大家喜欢!~ 下载地址 本文转自haiyang45751CTO博客,原文链接:http://blog.51cto.com/haiyang457/1708682 ,如需转载请自行联系原作者

转:Build.VERSION.SDK_INT = Build.VERSION_CODES.HONEYCOMB

转:Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB https://blog.csdn.net/fei900724/article/details/51643880转载于:https://www.cnblogs.com/ming-michelle/p/10501888.html

AlphaBlend參数BLENDFUNCTION

AlphaBlend是Window自带的GDI函数,在作GUI的时候为了达到更美丽的效果我们经常常使用它. BLENDFUNCTION是AlphaBlend用控制透明效果的重要參数. 定义例如以下: typedef struct _BLENDFUNCTION { BYTE BlendOp; BYTE BlendFlags; BYTE SourceConstantAlpha; …

到底哪种滤波算法好?互补滤波和卡尔曼滤波结果比较(转)

看到有人说互补滤波跟卡尔曼滤波效果差不多&#xff0c;我是不相信的。不过单我自己说不行&#xff0c;要有结果&#xff0c;后来我就用下面的代码进行测试&#xff0c;结果如下图<ignore_js_op> 结果&#xff1a;果然两滤波结果几乎相同。黑色曲线是互补滤波结果&#x…

js 创建文档碎片

js常见的创建dom节点的方法有 createElement() 创建一个元素节点 > 接收参数为string类型的nodenamecreateTextNode() 创建一个文本节点 > 接收参数为string类型的text内容createAttribute() 创建一个属性节点 > 接收参数为string类型的属性名称createComment() 创建…

JSON 方法

JSON JSON&#xff08;JavaScript Object Notation&#xff09;是表示值和对象的通用格式。在 RFC 4627 标准中有对其的描述。最初它是为 JavaScript 而创建的&#xff0c;但许多其他编程语言也有用于处理它的库。 因此&#xff0c;当客户端使用 JavaScript 而服务器端是使用…

Linux下卸载ORACLE的多种方法(转)

第一种# cd /u01/app/oracle/product/11.2.0/client_1/deinstall/ # ./deinstall# rm -rf /u01/app/oracle# rm -rf /etc/oratab# rm -rf /etc/oraInst.loc 第二种1. 运行 $ORACLE_HOME/bin/localconfig delete2. rm -rf $ORACLE_BASE/*3. rm -f /etc/oraInst.loc /etc/oratab4…