有没有一种简单的方法来检测容器元素中的焦点变化
Is there a straightforward way of detecting focus changes in a container element?
在下面的代码中:
div {padding: 10px; border: 1px solid black}
div.whenFocused {background: yellow}
input {display: block}
* {outline: none}
<div tabindex=0>
Text:
<input>
</div>
有没有一种简单的方法来检测DIV
何时直接或间接地通过其子项获得或失去焦点?
每当用户与 DIV 交互时,我需要 DIV 具有黄色背景。DIV 是可聚焦的,因此用户可以通过键盘或鼠标到达那里。
如果他们使用鼠标,则单击 DIV 内的任意位置必须触发背景颜色更改。此外,在 DIV 外部单击必须使背景色恢复正常。
我已经通过几个辅助函数和侦听不同元素上的多个事件实现了此行为。但是对于这么简单的事情来说,代码太多了。
我相信一定有一个简单明了的方法,但我现在想不出一个。
(简单来说,我的意思是侦听几个事件加上几个单行事件处理程序,仅此而已)
我使用jQuery找到了一个简单的解决方案:
$('div').on('focusin focusout',function(){ $(this)[(this.contains(document.activeElement)?'add':'remove')+'Class']('whenFocused') })
这并不完全简单,但至少它是单行的。
它需要支持:
聚焦/聚焦
节点包含
document.activeElement
相关文章:
- 在幻灯片放映时检测元素具有特定类
- Javascript检测元素前面的元素
- 使用jquery.visible.js和偏移量检测元素是否在视口中
- 滚动后,检测元素何时返回到原始位置
- 无法按类名检测元素
- 如何在Angular中有效地检测元素点击
- 如何使用 jQuery 检测元素的顶部靠近浏览器底部
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 我们如何检测元素外部的双击
- JavaScript中有没有办法检测元素是否附加了任何事件
- 检测元素高度变化,如果太小则隐藏
- 如何检测元素在跨域父级的iframe中是否可见
- jQueryUI-检测元素是否被拖动
- 使用JavaScript检测元素外部的点击
- JQuery:检测元素和所有子元素何时加载
- 在没有JQuery的情况下激发此不可检测元素的.click()事件
- 如何检测元素外部的点击,但该元素有子元素
- 检测元素是否已通过javascript调整大小
- 如何检测元素外部的触摸端事件
- 检测元素外的子对象何时获得焦点