zoukankan      html  css  js  c++  java
  • js事件

    一、事件绑定:

    onclick方式:

     1     /**
     2      * 在js中如果我们在写的事件的时候通过onclick方式的时候同一个元素在绑定相同的事件的时候,后注册的时间会被前一个事件覆盖。
     3      * 如果通过addEventListener注册事件的时候,不会发生覆盖情况。
     4      */
     5     var test=document.querySelector(".test");
     6     test.onclick=function(){
     7         alert(1)
     8     };
     9     test.onclick=function () {
    10         alert(2)
    11     }

    addEventListener:

    1    test.addEventListener("click",function () {
    2         console.log(1);
    3     });
    4     test.addEventListener('click',function () {
    5         console.log(2);
    6     })

    二、事件流。

    js中事件流分两种:

    • 冒泡事件:当子元素的事件被执行,他的父元素相同事件也依次执行。有子元素事件依次执行父元素的相同的事件。
    • 捕获事件:当触发子元素的事件的时候,先执行其父元素的相同的事件,由大到小依次执行相同的事件。最后执行的是子元素。
     1     /**
     2      *
     3      * @type {HTMLBodyElement}addEventListener(事件类型名称,触发事件执行的函数,boolean/{})
     4      * 当我们第三个参数传递的是boolean的时候,表示该事件是在捕获阶段执行(true)还是捕获阶段执行(false)
     5      */
     6     var  body=document.querySelector('body');
     7     body.addEventListener('click',function(){
     8         console.log("body")
     9     },true);
    10     test.addEventListener('click',function(){
    11         console.log('test')
    12     },true)

    1     /**
    2      * addEventListener 第三参数传递对象的时候:capture:boolean true表示在捕获阶段执行 false是非捕获阶段执行
    3      */
    4     body.addEventListener('click',function(){
    5         console.log('body')
    6     },{capture:true});
    7     test.addEventListener('click',function(){
    8         console.log('test')
    9     },{capture:true});

    默认情况下:js在执行事件的时候,是非捕获阶段执行即冒泡。

     默认事件:就是浏览器给元素提供的默认事件或者默认行为。比如a标签的点击跳转,button标签在form表单里进行提交等等。

     1   /**
     2      * 阻止默认事件: 使用事件提供的函数:event.preventDefault()来阻止浏览器提供的默认事件。
     3      */
     4     var a=document.querySelector('a');
     5     a.addEventListener('click',function(e){
     6         e.preventDefault();
     7         alert(22);
     8     });
     9     /**
    10      * addEventListener: 第三个参数可以传递once:boolean 表示改事件是否执行一次.
    11      */
    12     test.addEventListener('click',function(){
    13         alert('test')
    14     },{once:true});
    1     /**
    2      * addEvenetListener 第三个参数传递{passive:boolean}表示我们是否阻止默认时间发生 true:表示无法阻止默认事件发生,false表示可以阻止默认事件发生。
    3      */
    4     a.addEventListener('click',function(event){
    5         event.preventDefault();
    6         alert(2)
    7     },{passive:true})
    • 取消事件绑定 removeEventListenter 需要注意的是绑定的函数是显示声明不能是匿名函数
     1 <script>
     2     /***
     3      * 移除事件:removeEventListener(type,function)
     4      * 需要注意的是function是显示命名的函数.
     5      */
     6     var _div=document.querySelector('div');
     7     var button=document.querySelector('button');
     8     function clikFunc(){
     9         alert(22)
    10     }
    11     _div.addEventListener('click',clikFunc);
    12     button.addEventListener('click',function () {
    13         _div.removeEventListener('click',clikFunc);
    14     })
    15 
    16 </script>
    • 事件目标:表示触发改事件的元素。event.target:触发时间的元素。
    • 事件绑定元素:event.currentTaget 事件绑定的元素。
     1 <script>
     2     /**
     3      * 我们在绑定时间函数的时候,默认传进的形参事件对象event,该对象其中有event.target
     4      * event.target:表示触发事件的目标元素
     5      * 如下事例 由于冒泡的问题,在点击p标签的时候,会触发冒泡。此时event.target输出的p标签。
     6      * div点击输出的div标签。
     7      */
     8     var div=document.querySelector('div');
     9     var  p=document.querySelector('p');
    10     div.addEventListener('click',function (e) {
    11         console.log(e.target)
    12     })
    13 </script>

     1    /***
     2      * 事件的绑定元素获取 event.currentTarget
     3      * 获取的绑定事件对应的元素
     4      * 无论点击的div还是p标签返回的都是事件绑定的元素 div
     5      */
     6     var  div=document.querySelector('div');
     7     var p=document.querySelector('p');
     8     div.addEventListener('click',function (e) {
     9         console.log(e.currentTarget)
    10     })

     

  • 相关阅读:
    从零开始学CSS-overflow
    vue 高度自适应的问题处理
    子div在父div里居中
    IEC104协议规约解析
    Arduino编译总结
    通过golang小案例,了解golang程序常见机制
    用go实现常见的数据结构
    常见面试题整理,金三银四全靠它了
    golang知识总结
    .NET Core 基于 Grafana Loki 日志初体验
  • 原文地址:https://www.cnblogs.com/evilliu/p/10990158.html
Copyright © 2011-2022 走看看