热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

事件委托的小应用

事件委托事件委托利用冒泡原理,把事件加到父级元素上,触发事件的执行效果优点:节省内存开销对于追加的节点同样有效举了例子,创建一堆无序列表,我们希望当鼠标滑过的时,改变当前的
事件委托

事件委托
利用冒泡原理,把事件加到父级元素上,触发事件的执行效果

优点:

  • 节省内存开销

  • 对于追加的节点同样有效

举了例子,创建一堆无序列表,我们希望当鼠标滑过的时,改变当前

  • 的背景颜色


    • Event commission

    • mountain

    • leopard

    • tiger

    • Stalin

    • Hitler

    • Barton

    var ulBox = document.getElementById("ulBox");
    var li = document.getElementsByTagName("li");
    var l = li.length;
    for(i=0;i li[i].Onmouseover=function(){
    this.style.background="red";
    }
    li[i].Onmouseout=fucntion(){
    this.style.background="";
    }
    }

    这样,我们已经为每个

  • 都添加了事件,但是,这个事件循环了 i 次,比较消耗性能。

    用事件代理也可以实现同样的效果

    var ulBox = document.getElementById("ulBox");
    ulBox.Onmouseover= function(e){
    var hover = e||window.event;//获取事件对象,
    var nodeLi = hover.target||hover.srcElement;//获取事件对象的具体子元素
    nodeLi.style.background="red";
    } ulBox.Onmouseout= function(e){
    var hover = e||window.event;//获取事件对象,
    var nodeLi = hover.target||hover.srcElement;//获取事件对象的具体子元素
    nodeLi.style.background="red";
    }

    如果我们要追加几个

  • ,使用一个


    • Event commission

    • mountain

    • leopard

    • tiger

    • Stalin

    • Hitler

    • Barton

    如果使用常规方法

    var ulBox = document.getElementById("ulBox");
    var li = document.getElementsByTagName("li");
    var btn = document.getElementById("btn");
    var l = li.length;
    for(i=0;i li[i].Onmouseover=function(){
    this.style.background="red";
    }
    li[i].Onmouseout=fucntion(){
    this.style.background="";
    }
    btn.Onclick=function(){
    var oLi = document.createElement("li");
    oLi.innerHTML="Low";
    ulBox.appendChild(oLi);
    }
    }

    新加入的

  • 并不能响应滑过变色的事件,因为在添加完元素之前,循环已经执行完毕。

    使用事件委托,即可以直接响应事件效果

    ulBox.Onmouseover=function(e){
    var hover=e||window.event;
    var nodeLi=hover.target||hover.srcElement;
    nodeLi.style.background="red";
    }
    ulBox.Onmouseout=function(e){
    var hover=e||window.event;
    var nodeLi=hover.target||hover.srcElement;
    nodeLi.style.background="";
    }

    btn.Onclick=function(){
    var oLi = document.createElement("li");
    oLi.innerHTML="Low";
    ulBox.appendChild(oLi);
    }

  • 推荐阅读
    • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
    • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
    • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
      本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
    • 在JavaScript中,函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样,只有最后一个有效。如果调用函数时传入的参数个数与函数定义时的参数个数不符,会出现不同的情况。函数调用时,传入的参数个数少于函数定义时的参数个数,未传入的参数会被当做undefined处理,可能会导致错误。而传入的参数个数多于函数定义时的参数个数,多余的参数不会被使用,但不会报错。 ... [详细]
    • 如何在HTML中获取鼠标的当前位置
      本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
    • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
    • 如何使用Java获取服务器硬件信息和磁盘负载率
      本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
    • Voicewo在线语音识别转换jQuery插件的特点和示例
      本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
    • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
    • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
    • GetWindowLong函数
      今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
    • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
    • android listview OnItemClickListener失效原因
      最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
    • javascript  – 概述在Firefox上无法正常工作
      我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
    • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
    author-avatar
    俏君woo_267
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有