JS事件

作者: 我的天气很好啦 | 来源:发表于2018-08-06 10:36 被阅读0次
🥝事件的相关术语

事件类型: 鼠标事件、键盘事件
事件名称: click、dbclick等
事件目标: 表示与发生事件相关的目标对象
事件处理程序: 指处理事件的函数,即发生事件时需调用的函数

🥝事件的类型

事件分为 注册事件 和 注销事件。
注册事件的方法有两种:1⃣️属性注册 2⃣️方法注册

🥝属性注册

1⃣️ 设置HTML元素属性为事件处理程序
语法:

<button onclick="sayhello()">点击</button>

2⃣️通过JS设置元素对象的属性为事件处理程序
语法:

document.body.onclick = function(e) {
    alert(1);
}

🌈 属性注册具有唯一性,后面的属性注册会覆盖前面的。

🥝方法注册
        addEventListener(eventName, eventHandler, |useCapture)

1⃣️ eventName {string} 所注册的事件名称,不区分大小写,如注册鼠标点击事件写为click。
2⃣️ eventHandler {function | function object} 函数或函数对象,事件触发时所需执行的函数。
3⃣️ |useCapture {boolean} 可选:是否处于捕获阶段执行,默认为false。

🌈 addEventListener()方法能为同一对象同一方法注册多次,当发生此事件时,注册的处理事件程序将按照注册先后顺序执行。
IE9之前的IE不支持此方法,可使用attachEvent()代替。
若使用相同的事件处理程序对象多次注册在同一事件上,只算注册一次。

          attachEvent(eventName, eventHandler)

1⃣️ eventName {string} 所要注册的事件名称,例如onclick,onload
2⃣️ eventHandler {function | function object} 函数或者函数对象;当使用函数对象多次注册同一事件时,可注册多次。
例如:

function say(){
    console.log('1');
}
document.body.attachEvent('onclick',say);
document.body.attachEvent('onclick',say); // say第二次注册同一事件
 
document.body.click(); // => 1 1 :输出了2次say函数
🥝JQuery中的事件注册

JQuery中的事件注册方式对多浏览器的差异性进行了解决。
判断元素是否含有addEventListener()或attachEvent()

function add(element,type, eventHandle){
    if (element.addEventListener) {
        element.addEventListener(type, eventHandle, false);
    } else if (element.attachEvent) {
        element.attachEvent("on" + type, eventHandle);
    }
}
🥝注销事件

可以注册的事件,相应的也可以注销元素的事件。
removeEventListener()注销addEventListener()
detachEvent()对应于attachEvent()

🥝removeEventListener(eventName, eventHandlerObj)

eventName {string} :字符串,所要注销的事件名称。不需要加前缀“on”。
eventHandlerObj {function Object} :函数对象。传入一个函数体是没有效果的。

🥝detachEvent(eventName, eventHandlerObj)

eventName {string} :所要注销的事件名称,以"on"开头,后面跟着事件名称。
eventHandlerObj {function Object} :函数对象。传入一个函数体是没有效果的。

🥝多次注册与多次注销

因为attachEvent()可以把一个函数对象多次注册到元素同一个事件上,所以调用一次detachEvent()只能注销掉一次。

function sayHello() {
    console.log('1');
}
document.body.attachEvent('onclick', sayHello);
document.body.attachEvent('onclick', sayHello); // 注册了2次
 
document.body.click(); // => 1 1:输出2次
 
document.body.detachEvent('onclick', sayHello); // 注销1次
 
document.body.click(); // => 1 :输出结果为1,只注销了1次
🥝取消事件

给对象的事件属性赋值为null,可取消此事件的所有注册过的处理事件程序。

document.body.addEventListener('onclick', function(e){
    console.log(1);
});
document.body.addEventListener('onclick', function(e){
    console.log(2);
});
 
document.body.onclick=null; // onclick属性赋值为null,相当于注销了onclick事件
 
document.body.click(); // 无操作

相关文章

  • js(事件)

    js 事件js事件.png

  • js操作页面三步骤

    js操作页面三步骤 js事件 鼠标事件 文档事件 键盘事件 表单事件 事件对象 js操作内容 js操作样式 页面转...

  • 事件

    1、鼠标的移入移除js部分 2、鼠标事件js部分 3、事件对象js部分 4、键盘事件js部分 5、输入框事件js部...

  • 20、jQuery 事件机制

    20、jQuery 事件机制 原生js事件与jQuery事件: (1)用原生的js给div注册事件 原生js注册相...

  • javascript 中的事件机制

    js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...

  • JavaScript的事件机制详解

    【js事件详解】js事件封装函数,js跨浏览器事件处理机制 一、事件流 事件流描述的是从页面中接受事件的顺序。IE...

  • JS的事件绑定和事件流模型

    一、JS事件 (一)JS事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout...

  • js事件 事件冒泡

    js事件的分类 事件的类型:有鼠标事件,键盘事件,HTML事件,变化事件 注意:js中的事件前面要加on(如:on...

  • JS事件相关基础

    js事件: 键盘事件: JS中的事件冒泡和事件捕获: 1、事件冒泡。如下代码: 点击button事件,连同父元素绑...

  • 2019-01-11 input框事件,jQuery其他事件,自

    js事件的分类事件的类型:有鼠标事件,键盘事件,HTML事件,变化事件注意:js中的事件前面要加on (如:onc...

网友评论

      本文标题:JS事件

      本文链接:https://www.haomeiwen.com/subject/kypcvftx.html