sdc-main-oc 添加点击事件_事件详解C - 键盘事件及事件流

71f35a30b215a1e3c792b765f4e20745.png

键盘事件

格式:document.键盘事件

1.onkeypress; 按下字符键触发

2.onkeydown; 按下任意键触发

先来看onkeypress和onkeydown:

f692c0d555233a814aa2d68523a22aa3.png

运行结果如下:

0d375c0502dd3fba2ac1f1261a7ddb6f.png
a8e63fb7982dfdaf7873d160220eba06.png

altKey、ctrlKey、shiftKey; 也是键盘事件的属性

//返回布尔值true或者false来判断是否按了某一个键

来看一下使用方法:

1c8e39df2d7e420fa226663257e1212e.png

运行结果如下:

26837fe03bb11253d06df9869acf79e0.png
117af8a9b4b9a48a0d5a9082bf684c4e.png

evt.keyCode; 判断是否按了某个键

bca91cedd117c7761f22a40b6a07ebf7.png

运行结果如下:

a0f5a3b30a4a81da252bc91a8a4b594c.gif
d4fd9b03c02770ea6f0f789d0aeea7d3.png

事件流

事件流描述的是页面接收事件的顺序

事件流的的三个阶段︰捕获,目标,冒泡

阻止冒泡

事件委托机制∶利用事件冒泡的原理,把本应添加给某元素上的事件委托给他的父级(外层)

举个小例子:

accf1748a89ced546b5be75930d69e41.png

运行结果如下:

点击红色区域只显示outer;但是点击蓝色区域会显示inner和outer,inner先输出。

7873523be4ac7fb74f6af2b47eef06c8.png

此时,点击蓝色区域相当于先点蓝色再点红色

下面红色区域也会输出,就是因为有冒泡情况的出现

冒泡:最特定的目标,到最不特定的目标的过程

b6dcd0857f3dbb341ba2a6927a621dd6.png

那我们该如何阻止冒泡显示呢?

这里需要先定义evt,然后使用下面两种方式:

evt.cancelBubble = true; //适合于所有高低版本的浏览器

evt.stopPropagation(); //适用于新版的浏览器

我们还是拿上面的例子来看一下:

只需要在上面的例子上加上这几句代码

fb6e9aad7e4840439992abc30f39d98d.png

运行结果如下:

bea90b49ab46745b777036e0bcabd6e9.png

即可成功取消冒泡操作,点击蓝色只会出现inner

f86184bebcf72fa7e31e0b0743e044e1.png

事件委托机制

上面我们提到事件委托就是利用事件冒泡的原理,把本应该添加给某元素上的事件委托给它的外层父级

为什么会有事件委托机制呢?

因为在我们的实际操作的过程当中,我们有显示某些数据的一个列表,我们在进行页面布局的时候,默认的显示5条数据,这5条数据假设我们都需要添加一个单击事件,当我们点击加载更多,或者有其他操作、需要更多数据的时候,后面的这个数据它就不具备单击事件

这时候不是我们所希望看到的,就需要用到事件委托了,即使是后添加到页面当中的数据,也能具备相应的事件处理函数

我们还是通过具体的代码来看一下:

f3d487c22c5ef3d226aceafb92a21e57.png

运行结果如下:

24bb9f1d551ff117cbdd04cababf85ae.png

当我们点击前5个的时候都没有问题可以正常显示

但是当我们点击后面在js中创建的5个时不会显示任何效果

我们来利用事件委托来拯救一下这个问题:

这里我们要把本来添加到li上的事件添加到ul上,下标写在获取时,方便书写

470d8eaf2f9d242674f682015aec95f6.png

运行结果如下:

80d0ea4dc6a91d02f0b0e7e02f557152.png

无论点击之前的5个还是新建的5个,包括空白区域

只要点击ul中的东西就会返回aa

显然这也不是我们需要的效果

08b4f6b24e5be51c53d14e863861a71d.png

这里将获取节点nodeName时,改为大写,是因为

当你输出nodeName时你会发现全是大写的

nodeName代表指定的节点名称

现在的运行效果如下:

e554e867b4abd04e3baded1b456b381f.png

分别点击就会显示正确的对应数值

de18a7c36e778d70b8a985c2f399381d.png

- 写作不易,大家多多关注,谢谢啦-

---web分享,分享的不只是web

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值