最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 事件委托简介

    正文概述 掘金(橘越)   2021-02-14   431

    什么是事件委托?

    事件委托就是利用事件冒泡。只指定一个事件处理程序,就可以管理某一类型的所有事件。

    为什么需要使用事件委托?

    在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能。每个函数都是对象,都会占用内存;内存中的对象越多,性能就越差。其次,必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间。

    事件委托的原理

    事件冒泡

    事件委托实现例子

        <ul id='ul'>
            <li id='home'>首页</li>
            <li id='about'>关于我们</li>
            <li id='login'>登录</li>
        </ul>
    
        let ulDom = document.getElementById('ul')
    
        // 添加事件监听函数
        function addHandler(element, type, handler) {
            // 跨浏览器适配
            if (element.addEventListener) {
                element.addEventListener(type, handler, false)
            }else if (element.attachEvent) {
                element.attachEvent('on' + type, handler)
            }else {
                element['on' + type] = handler
            }
        }
    
        function proxy(e) {
           e = e ? e : window.event;
    
           // 返回事件的目标节点
           let target  = e.target || e.srcElement;
            
           // 根据不同点击,触发不同的操作
           switch(target.id) {
               case 'home':
                    location.href = 'http://localhost:8000/home'
                    break;
               case 'about':
                   location.href = 'http://localhost:8000/about'
                    break;
               case 'login':
                   location.href = 'http://localhost:8000/login'
                    break;
           }
        }
    
        addHandler(ulDom, 'click', proxy)
    
    
        /**
         * 使用事件委托只为ul标签添加了一个onClick事件处理程序。
         * 由于所有的列表项都是这个元素的子节点,而且它们的事件会冒泡,所以单击事件最终会被这个函数处理。
         * 因为事件目标是被单击的列表项,故而可以通过检测id属性来决定适当的操作。
         * 因为只取得了一个DOM元素,只添加了一个事件处理程序。这种方式需要占用的内存更少。对用户来说结果相同
         * 所有用到的按钮的事件(鼠标事件和键盘事件)都可以采用事件委托技术
         * */
    

    起源地下载网 » 事件委托简介

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元