zoukankan      html  css  js  c++  java
  • 只绑定一次事件的简单方法

    概述

    今天我无意中看到了只执行一次事件的简便方法,记录下来,供以后工作时参考,相信对其他人也有用。

    一般方法

    先来回顾一下一般方法:

    const $once = function (target, event, fn) {
        const that = this;
    
        function newFn (...args) {
            target.removeEventListener(event, newFn);
            fn.apply(that, ...args);
        }
    
        target.addEventListener(event, newFn);
    }
    

    简便方法

    其实 addEventListener 的第三个参数不仅仅有 useCapture(bool值),还可能是一个 options(对象),options 的各属性解释如下:

    capture: 默认值为false,是否使用事件捕获
    once: 默认值为false,是否只调用一次,是的话会在调用后自动销毁 listener
    passive: 默认值为false,是否永远不调用 preventDefault 方法。在某些浏览器上面,为了保证滚动性能,会针对 touchstart 和 touchmove 事件将默认值设置为 true
    

    所以只需要使用 once 属性即可:

    target.addEventListener(event, fn, { once: true });
    
  • 相关阅读:
    GateWay配置使用
    Hystrix&Dashboard配置使用
    Ribbon&OpenFeign配置使用
    服务端&客户端注册进Eureka
    Eureka单机&集群配置
    通过淘宝IP库获取定位
    php 红包瓜分算法(实用)
    换博客力!
    2021 上学期做题记录
    计数 DP 学习笔记
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/13783237.html
Copyright © 2011-2022 走看看