前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript笔记(17)

JavaScript笔记(17)

作者头像
y191024
发布2022-09-20 20:14:29
7770
发布2022-09-20 20:14:29
举报

事件委托

事件冒泡本身的特征,会带来坏处,也会带来好处,需要我们灵活掌握.

事件委托

事件委托也称为事件代理,在jQuery里面被称为事件委派

事件委托的原理

不是给每个子节点单独设置事件监听器,而是将事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点 (一定要记住!)

事件委托的作用

我们只操作了一次DOM,提高了程序的性能

那我们可以这么做,给ul加上点击事件:

但是我们可以看到点击li的时候也会弹出警示框,这是为什么呢?

JS中当触发某些具有冒泡性质的事件时,首先在触发元素寻找是否有相应的注册事件,如果没有再继续向上级父元素寻找是否有相应的注册事件作出响应,这就是事件冒泡。

也就是说,由于是冒泡阶段,所以是按照 li->ul->body->html->document的顺序查找的,由于在li中没有找到触发事件,就向上一级(ul)寻找触发事件,ul设置了触发事件,所以会弹出警示框,但由于点击的是li,e.target是li,所以li的背景会变成粉红色.

常用的鼠标事件

1.禁止鼠标右键菜单

contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单.比如取消显示框选文本后点击右键的复制

这样就不能右键复制了,但是还是可以control+c复制,那现在我们再学习一个阻止鼠标选中的方法:

2.禁止鼠标选中 (selectstart)

鼠标事件对象

event对象代表事件的状态,跟事件相关的一系列信息的集合.现阶段我们主要是用鼠标事件对象MouseEvent和键盘事件对象KeyboardEvent

clientX / clientY

我们获取一下在可视区中的点击坐标:(如果页面滚动也不会影响)

但是如果整个页面有有滚动条,我们想要获取点击的位置距离最顶端的坐标呢?我们需要用到 pageX和pageY

实际开发中page用的比较多,重点记page这个

案例: 跟随鼠标移动的天使

我自己做出来啦,看看代码:

这个效果在购物平台很常见,比如放大商品细节时的黄色框框

如果想要居中那就x-盒子宽度的一半,y减去盒子高度的一半

常用的键盘事件

  • keyup和keydown是不区分大小写的,keypress区分大小写
  • 如果同时写了onkeydown和press,会先执行onkeydown再执行press,因为press多了一层判断

案例时间到: 我们做个京东的案例,就算用户点击了页面中的其他地方,只要按下's'键,光标就能回到搜索框:

贴一下我一开始的做法:

但是出现了问题:当我按下s时,s也被输进去了,这不是我们要的效果

这是因为我们一直按着(即使时间很短),所以s也会被输进去,所以我们换个思路,将keydown换成keyup,那么就可以成功实现了:

案例:模拟京东快递查询

我们在输入单号的时候上面会出现一个大的框框,里面的数字字号更加大些,先自己试着做做

千万要注意用的是keyup而不是keydown,因为我们按下键盘时,就已经触发事件,但是文字还没有输入文本框内.

DOM部分到这里就结束啦!接下来学习BOM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档