一.事件流

事件流描述的是从页面中接收事件的顺序,目前主要有三个模型:

#1. 事件冒泡:

事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的元素

img

#2. 事件捕获

不太具体的节点更早接收事件,而最具体的元素最后接收事件,和事件冒泡相反

img

#3. DOM事件流

DOM2级事件规定事件流包括三个阶段: 事件捕获阶段,处于目标阶段,事件冒泡阶段。首先发生的是事件捕获,为截取事件提供机会,然后是目标阶段,最后是冒泡阶段

img

DOM2级事件第三个参数布尔值: true 事件捕获 false 事件冒泡

阻止冒泡: e.stopPropagation()

取消默认行为: e.preventDefault()

事件源: e.target || e.srcElement

#二.事件委托

事件委托就是利用事件冒泡将子元素某一类型的事件委托给父元素集中管理。

事件委托绑定事件比循环绑定事件好在哪?

\1. 减少页面上的事件处理程序,减少DOM操作提高性能

\2. 简化动态渲染的数据其他的dom操作

#三.案例-三级联动

效果图:

功能思路分析:

功能一: 封装公用渲染方法

\1. 省市区结构一致,数据不同,可封装公用方法,点击时调用,传递不同数据

\2. 通过自定义属性记录数据的下标

\3. 省和市的数据都是数组对象格式,区是数组格式,渲染是需要做个判断

功能二:省份渲染

\1. 给省份盒子绑定点击事件

\2. 调用渲染方法,将省份数据渲染到ul中,并显示ul

\3. 利用事件委托,判断事件源是否为li,是则选中并隐藏ul

\4. 通过getAttribute()记录省份下标

\5. 重置市和区

功能三:城市渲染

\1. 给城市盒子绑定点击事件

\2. 调用渲染方法,通过省份下标找到城市数据,渲染到ul中,并显示ul

\3. 利用事件委托,判断事件源是否为li,是则选中并隐藏ul

\4. 通过getAttribute()记录城市下标

\5. 重置区

功能四:区域渲染

\1. 给区域盒子绑定点击事件

\2. 调用渲染方法,通过省份下标和城市下标找到区域数据,渲染到ul中,并显示ul

\3. 利用事件委托,判断事件源是否为li,是则选中并隐藏ul

#四.今日小结

事件流:事件传播的机制

分为三个阶段: 捕获阶段 ==> 目标阶段 ==> 冒泡阶段

捕获:由不具体到具体 ==> 外到内

冒泡:由具体到不具体 ==> 内到外

阻止冒泡: e.stopPropagation()

取消默认行为: e.preventDefault()

事件源: e.target || e.srcElement

获取自定义属性: 元素.getAttribute()

#五.作业 -- 标签库增删

效果图:

功能思路分析:

1. 添加自定义标签

(1) 点击添加标签按钮,创建标签

(2) 获取文本框的内容

(3) 添加到选中盒子里

2. 展开收起标签库

\3. 标签库渲染

(1) 模拟数据,渲染标签

4. 添加标签库标签

(1) 点击标签库中的标签添加到选中区域( 事件委托 )

(2) 选中项高亮

5. 删除标签

判断删除标签,是标签库中的标签则取消高亮( 事件委托 )

js下 Day09、事件(二)的更多相关文章

  1. 从零开始的JS生活(二)——BOM、DOM与JS中的事件

    上回书说道,JS中变量.运算符.分支结构.循环和嵌套循环等内容.本回就由本K给大伙唠唠JS中的BOM.DOM和事件. 一."花心大萝卜"--BOM 1.震惊,FFF团为何对BOM举 ...

  2. Node.js event loop 和 JS 浏览器环境下的事件循环的区别

    Node.js  event loop 和 JS 浏览器环境下的事件循环的区别: 1.线程与进程: JS 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程? 进程是 CPU ...

  3. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

  4. js的touch事件的实际引用

    一开始做前端页面的时候,接触的也是js,但是随后便被简单高效的jquery吸引过去,并一直使用至今. 而js,则被我主观的认为底层技术而抛弃. 直到这几天工作需要,研究移动端页面的触屏滑动事件,搜索j ...

  5. js中冒泡事件和捕获事件

    js中冒泡事件和捕获事件: 冒泡事件:冒泡事件是从里向外,即是从被绑定元素开始一直向外到达页面的所有祖先元素都会被触发,这 一过程被称为事件冒泡.这个事件从原始元素开始一直冒泡到DOM树的最上层 捕获 ...

  6. CSS+JS下拉菜单和纯CSS下拉菜单

    下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...

  7. 看懂此文,不再困惑于 JS 中的事件设计

    看懂此文,不再困惑于 JS 中的事件设计 今天刚在关注的微信公众号看到的文章,关于JS事件的,写的很详细也很容易理解,相关的知识点都有总结到,看完就有种很舒畅的感觉,该串起来的知识点都串起来了.反正一 ...

  8. node.js 下依赖Express 实现post 4种方式提交参数

    上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...

  9. js中的事件,内置对象,正则表达式

    [JS中的事件分类] 1.鼠标事件: click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup 2.键盘事件: keydown: 键盘按 ...

随机推荐

  1. 面试官:小伙子,你给我说一下Java中什么情况会导致内存泄漏呢?

    概念 内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用.即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费. 可达 ...

  2. 标准库之collections

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter)   dict的子类,计算可hash的对象: 双端队列(deque)  类似于list ...

  3. Docker这么火爆。章节一:带你详尽了解Docker容器的介绍及使用

    前言 很多小伙伴可能在工作中都听说过Docker,但是实际工作中却没有使用过,听得多了,也对Docker内心有一种很深切的想了解,但是因为各种原因而不知道如何去了解而发愁,不要急,这篇文章带你认识Do ...

  4. MathType颜色设置的技巧

    MathType功能非常强大,在编辑公式时使用非常方便.运用MathType不仅可以改变公式的字体和字号,也可以改变公式字体颜色,MathType颜色设置还是有一套技术的,下面我们就一起来看看公式编辑 ...

  5. 对数组进行排序成最小的,相当于自己实现了一次String的compareTo函数,不过是另类的。

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. //一气呵成 ...

  6. day007|python基础回顾7

    文件处理 目录 文件处理 1 文件打开模式补充 2.1 文件操作之读操作 2.2 文件操作之写操作 3 控制文件指针移动 3.1 前提 3.2 f.seek() 4 文件修改的两种方式 4.1 方式一 ...

  7. 考研数学数一公式整理(微积分&线性代数&概率统计)

    主要根据李永乐老师的线性代数讲义.全书和汤家凤老师的高数讲义整理的. 用于记背数学需要背的公式和步骤,概念.定义.公式多,方法步骤少(毕竟太庞杂了). 本来是自用,但还是分享一下,希望有补充指正! 链 ...

  8. mq checkpoint文件

    记录comitlog,consumeQueue,Index文件的刷盘时间点,文件固定长度4k,其中只用该文件的24个字节,其存储格式: 8字节physicMsgtimestamp+8字节logicsM ...

  9. Cassandra与职业发展 | 阿里云栾小凡 × 蔚来汽车张旭东 × 网龙阙乃祯

    # 活动精彩实录 | Cassandra与职业发展 点击此处观看完整活动录像​ 大家好,我叫邓为,我目前在DataStax担任领航架构师.我在DataStax工作了7年多的时间,也有7年多的Cassa ...

  10. spring框架使用c3po链接数据库

    编辑工具:idea 1.配置pom.xml文件(创建模板时软件自动创建) 导入spring的核心架包 全部架包官网:https://mvnrepository.com/ 1 <dependenc ...