<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
li{
border: 1px solid #ddd;
cursor: pointer;
}
</style>
<script>
/**
* 事件委托:
* 事件委托添加事件,其实并不是直接添加给目标元素,
* 而是往往给父元素添加事件,
* 再通过event.target找到目标元素,
* 判断event.target是否为我们要查找的元素,满足条件执行代码
*
* */
window.onload = function () {
var list = document.getElementById('list');
/*1) 普通for循环注册事件*/
console.time("for循环绑定");
for(var i = 0 ; i < list.length; i++ ) {
list.children[i].index = i;
list.children[i].onclick = function () {
alert("给到全部li注册事件"+this.index)
}
}
console.timeEnd("for循环绑定");
/* 2) 事件委托注册事件
* 事件委托绑定事件其实并不是直接绑定给目标元素
* 而是往往绑定给父元素
* */
console.time('事件委托绑定');
list.onclick = function (event) {
if(event.target.nodeName.toLowerCase() == "li") {
alert("给到全部li注册事件")
}
}
console.timeEnd("事件委托绑定");
}
</script>
</head>
<body>
<ul id="list">
<li>这个是第001个列表</li>
<li>这个是第002个列表</li>
<li>这个是第003个列表</li>
<li>这个是第004个列表</li>
<li>这个是第005个列表</li>
<li>这个是第006个列表</li>
<li>这个是第007个列表</li>
<li>这个是第008个列表</li>
<li>这个是第009个列表</li>
<li>这个是第010个列表</li>
<li>这个是第011个列表</li>
<li>这个是第012个列表</li>
<li>这个是第013个列表</li>
<li>这个是第014个列表</li>
<li>这个是第015个列表</li>
<li>这个是第016个列表</li>
<li>这个是第017个列表</li>
<li>这个是第018个列表</li>
<li>这个是第019个列表</li>
<li>这个是第020个列表</li>
<li>这个是第021个列表</li>
<li>这个是第022个列表</li>
<li>这个是第023个列表</li>
<li>这个是第024个列表</li>
<li>这个是第025个列表</li>
<li>这个是第026个列表</li>
<li>这个是第027个列表</li>
<li>这个是第028个列表</li>
<li>这个是第029个列表</li>
<li>这个是第030个列表</li>
<li>这个是第031个列表</li>
<li>这个是第032个列表</li>
<li>这个是第033个列表</li>
<li>这个是第034个列表</li>
<li>这个是第035个列表</li>
<li>这个是第036个列表</li>
<li>这个是第037个列表</li>
<li>这个是第038个列表</li>
<li>这个是第039个列表</li>
<li>这个是第040个列表</li>
<li>这个是第041个列表</li>
<li>这个是第042个列表</li>
<li>这个是第043个列表</li>
<li>这个是第044个列表</li>
<li>这个是第045个列表</li>
<li>这个是第046个列表</li>
<li>这个是第047个列表</li>
<li>这个是第048个列表</li>
<li>这个是第049个列表</li>
<li>这个是第050个列表</li>
<li>这个是第051个列表</li>
<li>这个是第052个列表</li>
<li>这个是第053个列表</li>
<li>这个是第054个列表</li>
<li>这个是第055个列表</li>
<li>这个是第056个列表</li>
<li>这个是第057个列表</li>
<li>这个是第058个列表</li>
<li>这个是第059个列表</li>
<li>这个是第060个列表</li>
<li>这个是第061个列表</li>
<li>这个是第062个列表</li>
<li>这个是第063个列表</li>
<li>这个是第064个列表</li>
<li>这个是第065个列表</li>
<li>这个是第066个列表</li>
<li>这个是第067个列表</li>
<li>这个是第068个列表</li>
<li>这个是第069个列表</li>
<li>这个是第070个列表</li>
<li>这个是第071个列表</li>
<li>这个是第072个列表</li>
<li>这个是第073个列表</li>
<li>这个是第074个列表</li>
<li>这个是第075个列表</li>
<li>这个是第076个列表</li>
<li>这个是第077个列表</li>
<li>这个是第078个列表</li>
<li>这个是第079个列表</li>
<li>这个是第080个列表</li>
<li>这个是第081个列表</li>
<li>这个是第082个列表</li>
<li>这个是第083个列表</li>
<li>这个是第084个列表</li>
<li>这个是第085个列表</li>
<li>这个是第086个列表</li>
<li>这个是第087个列表</li>
<li>这个是第088个列表</li>
<li>这个是第089个列表</li>
<li>这个是第090个列表</li>
<li>这个是第091个列表</li>
<li>这个是第092个列表</li>
<li>这个是第093个列表</li>
<li>这个是第094个列表</li>
<li>这个是第095个列表</li>
<li>这个是第096个列表</li>
<li>这个是第097个列表</li>
<li>这个是第098个列表</li>
<li>这个是第099个列表</li>
</ul>
</body>
</html>

JavaScript--事件委托--冒泡的更多相关文章

  1. JavaScript 事件委托的技术原理

    如今的 JavaScript 技术界里最火热的一项技术应该是‘事件委托(event delegation)’了.使用事件委托技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器是被添加到它们 ...

  2. JavaScript事件委托的技术原理

    如今的JavaScript技术界里最火热的一项技术应该是‘事件委托(event delegation)’了.使用事件委托技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器是被添加到它们的父 ...

  3. javascript事件委托机制详解

    以个人前端工作面试经历来看,javascript事件委托是问的最多的一类题目之一,熟悉事件委托能够了解你对于javascript的掌握程度. 面试官可能问一下问题,现在有5个li待办事件,需要实现当点 ...

  4. JavaScript 事件委托

    JavaScript事件委托,或者叫事件代理,是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 借花献佛的例子(取快递): 有三个同事预计会在周一收到快递.为签收快递,有两种办法 ...

  5. 关于javaScript事件委托的那些事

    今天是第一次写稿,还是有那么一丢丢小鸡冻...回归正题啦... 关于javaScript事件委托不得不说的那些事,为什么要使用事件委托? 我们可以这么说,假设老板要分配一项任务,首先要秘书叫A君来到办 ...

  6. JavaScript事件捕获冒泡与捕获

    事件流 JavaScript中,事件流指的是DOM事件流. 概念 事件的传播过程即DOM事件流.事件对象在 DOM 中的传播过程,被称为"事件流".举个例子:开电脑这个事,首先你是 ...

  7. [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流

    面试题 event 事件 事件委托是什么? 如何阻止事件冒泡,阻止默认事件呢? Javascript 的事件流模型都有什么? 事件绑定和普通事件有什么区别? Event 对象 Event 对象,当事件 ...

  8. 浅析JavaScript事件流——冒泡

    一.什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序. 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传 ...

  9. javascript 事件委托,jq,js模拟事件

    <!DOCTYPE> <html> <head> <title></title> <script src="Scripts/ ...

  10. Javascript事件委托

      事件委托利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件未使用事件委托之前: <!DOCTYPE html> <html> <head> &l ...

随机推荐

  1. 阿里云提供全托管 ZooKeeper

    自 2010 年左右第一次引入以来,Apache ZooKeeper 目前在阿里巴巴集团内部已经有了将近 10 年的发展,使用的场景非常广泛,基于 ZooKeeper 强一致性的特点,被用在了分布式锁 ...

  2. 官方 NSIS 插件全集简单介绍

    Math plugin (contain examples) -- 数学函数插件,NSIS 软件已包含,这个不用说了吧,计算的时候必用. System plugin (contain examples ...

  3. VitualBox虚拟机安装CentOS, shell模式与图形化界面的相互切换

    方法一:永久切换 # vi /etc/inittab 编辑 init 5 为 init 3,重启就自动进入控制台方式:反之桌面模式 方法二:当前有效 桌面模式切换shell模式:Ctrl + Alt ...

  4. phpStrom编辑器 通过 git 提交代码到 gitlab

    前提: 1.已经成功安装 git: 2.将 phpstrom 和 gitlab 连接起来.参考此文章 一.在 phpstrom 中打开需要推送的项目 二.将 ‘工作区’ 代码 添加到 ‘暂存区’ 三. ...

  5. Codec入门

    Codec 提供了一些公共的编解码实现,比如Base64, Hex, MD5等等. 工具类 package com.cxl.beanutil.util; import org.apache.commo ...

  6. JasperReport填充报表6

    任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些 ...

  7. 创建 SSH Keys

    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.简单说,SSH是 ...

  8. 在Linux中常用的启动引导工具:grub和lilo

    在Linux和WINDOWS两系统并存时就需要安装GRUB(Grand Unified Bootloader),GRUB被广泛地用于替代lilo,GRUB支持在启动时使用命令行模式,支持md5加密保护 ...

  9. TZOJ 5094 Stringsobits(DP)

    描述 Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits, of course, are either ...

  10. 使用Python的requests库作接口测试——对HTTP动词的支持

    Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE. 动词GET-查看提交信息 HTTP GET是一个幂等的方法,从给定的 ...