JS 事件 Event

注册事件

target.addEventListener(type, listener, options);
或者
target.addEventListener(type, listener, useCapture); //第三个选项为布尔值,表示是否启用事件捕获,默认不启用false

  事件类型参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Event

删除事件

target.removeEventListener(type, listener[, useCapture])

事件冒泡 / 事件捕捉

  事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡

举个栗子,点击里面的div 同时也会触发外面div 的事件

<body>
    <div id="outside">
        <div id="inside">

        </div>
    </div>
</body>
</html>
<script>
    document.querySelector(‘#outside‘).addEventListener(‘click‘,function(e){
        console.log("i am outside");
    })
    document.querySelector(‘#inside‘).addEventListener(‘click‘,function(e){
        console.log(‘i am inside‘);
    })
</script>

两种方法可以组织事件冒泡

  • e.cancelBubble = true
  • e.stopPropagation()
    document.querySelector(‘#outside‘).addEventListener(‘click‘,function(e){
        console.log("i am outside");
    })
    document.querySelector(‘#inside‘).addEventListener(‘click‘,function(e){
        // e.cancelBubble = true;
        e.stopPropagation();
        console.log(‘i am inside‘);
    })

事件委托

事件委托就是事件冒泡的一种应用,举个栗子,在下面dom中,如果想要给每个li上绑定click事件,需要循环遍历每一个li,然后在给每一个li分别注册事件,这显然影响性能,因此我们可以通过事件委托来实现这一操作

<ul>
    <li>hello 1</li>
    <li>hello 2</li>
    <li>hello 3</li>
    <li>hello 4</li>
  </ul>

我们给ul注册点击事件,事件会捕捉每一次li的点击,将点击对象保存在e.target ,而e.currectTarget中保存的是ul对象

<script>
    let ul = document.querySelectorAll(‘ul‘)[0]
    let aLi = document.querySelectorAll(‘li‘)
    ul.addEventListener(‘click‘,function(e){
       let oLi1 = e.target
       let oLi2 = e.currentTarget
        console.log(oLi1)   //  被点击的li
        console.log(oLi2)   // ul
        console.og(oLi1===oLi2)  // false
    })</script>

代码来源:https://www.jianshu.com/p/1dd668ccc97a

阻止默认行为

什么是默认行为? 例如点击a标签后会自动跳转,点击submit按钮后会提交等等

Event.preventDefault()

原文地址:https://www.cnblogs.com/xiaoliwang/p/9040506.html

时间: 2024-08-29 03:37:32

JS 事件 Event的相关文章

js事件(Event)知识整理

事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemove 如果按下鼠标上的设备(左键,右键,滚轮--),则触发mousedown 当设备弹起的时候触发mouseup 目标元素的滚动条发生移动时(滚动滚轮/拖动滚动条..)触发scroll 滚动滚轮触发mousewheel,这个要区别于scroll 鼠标移出元素的那一刻,触发mouseout 事件注册 平常

js事件 event.target

我们购物车里,会时不时增加和删除产品时,就会绑定事件和解绑的动作. <ul> <li></li> <li></li> </ul> 例子:在li上未来绑定事件, $('ul').on('click','li',function(){ $(this).remove(); }); 例子:在ul上绑定事件 $('ul').on('click',function(event){ var This=event.target; $(This).re

js事件(Event)知识整理[转]

1 事件注册 2 3 平常我们绑定事件的时候用dom.onxxxx=function(){}的形式 4 这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄. 5 但很多时候我们需要绑定多个处理句柄到一个事件上,而且还可能要动态的增删某个处理句柄 6 下面的事件注册方式就能解决这个需求. 7 8 先介绍一下四个方法 9 10 复制代码 代码如下: 11 12 13 //IE以外 14 target.addEventListener(type,listener,useCapture) 1

JS之Event事件

<script> function ff(event) { var e = window.event||event;//Event对象:发生当前事件的状态 // var src = e.srcElement||e.target;//获得事件中的value值 var c = e.keycode||e.charCode;//获得键盘输入的值的编码 // alert(e); // alert(src.value); alert(c); } /** var e; if(window.event){ e

JS中event事件

JS事件基础 1.event对象 (1)用来获取事件的详细信息:鼠标位置.键盘位置 document的本质:document.childNodes[0].tagName     例子:获取鼠标位置:clientX横坐标,clientY纵坐标 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script>

node.js事件循环 event loop

Nodejs事件循环 (event loop) node.js 事件循环的概念 当node.js 启动的时候会初始化eventloop ,每一个evnet loop 都会包含如下6个循环阶段,node.js 事件循环和浏览器事件循环完全不一样. 官网文档:https://nodejs.org/zh-cn/docs/guides/event-loop-timers-and-nexttick/ timers pending callbacks (I/O callbakcs) idle, prepar

JS事件(事件冒泡和事件捕获)

事件流:描述的是在页面中接收事件的顺序 事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档) 事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 DOM中:用于处理指定和删除事件处理程序的操作addEventListener()和removeEventListener().他们都接收三个参数:要处理的事件名.作为事件处理程序的函数和布尔值(事件处理的时候)[true:事件捕获时;false:事件冒泡时] DOM中的事件对象: type属性 用于获取事件类

略谈js事件

 本人是这样从做学的js事件分成以下三个方面: 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这三个事件句柄.一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup. 在这3种事件类型中,keydown和keyup比较底层,而keypress比较高级.这里所谓的高级是指,当用户按下shift +

JS中的函数、Bom、DOM及JS事件

本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的声明及调用] 1.函数声明的格式: function 函数名(参数1,参数2,参数3,--){//函数体 return 结果; } >>>函数的调用格式: 直接调用:函数调用的格式:函数名(参数一的值,参数二的值,--): 事件调用:事件名=函数名( ); 2.函数声明的几点强调: ①函数名