前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >div实现绑定按键事件 转

div实现绑定按键事件 转

作者头像
stys35
发布2019-04-29 18:25:17
1.2K0
发布2019-04-29 18:25:17
举报
文章被收录于专栏:工作笔记精华工作笔记精华

问题背景

所有的页面都会引用一个公共js代码库base.js,在这个代码库里为document绑定了按键事件,现在需要为某个特殊的custom.html页面定制事件handler。

解决思路

1. 作为js小白,首先想到的是在custom.html里重新为按键绑定一个customHandler来覆盖原来的handler

$(document).keypress(customHandler);

测试的时候发现js并不会覆盖,会先执行customHandler,再执行handler;

2. 找资料发现了一个event.stopPropagation()可以停止事件传播,写进去发现不起作用,找到官方对这个函数的说明发现这个函数只能阻止元素的事件向上层元素传播,由于这两个处理器都绑定在document上,没有上下级关系,所以没起作用。

3. 那就制造上下级关系,把customHandler绑定在custom.html里的一个div元素上

$(“#divId”).bind("keypress",customHandler);

测试发现监听不到按键事件,因为div元素没法获取焦点,但只要为div元素加上tabIndex属性就能获取焦点

<div id="divId" tabIndex=-1></div>

4. 测试发现div里面的内容外面多了一个边框,非常难看,加上style="outline:none"后边框消失。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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