【发布时间】:2022-02-24 06:17:55
【问题描述】:
这个问题和我之前的问题Click action on Focused DIV类似, 但这次的主题是,当我单击其中一个 div 时,如何防止触发焦点事件。 上次我有一个带有 tabindex='-1' 的 div 以使其在点击时可聚焦,现在我有一个 tabindex>0 的 div 列表,因此它们也可以在 tab 键时获得焦点。
<div tabindex='1'>Div one</div>
<div tabindex='1'>Div two</div>
<div tabindex='1'>Div tree</div>
<div tabindex='1'>Div four</div>
一些样式:
div {
height: 20px;
width: 60%;
border: solid 1px blue;
text-align: center;
}
div:focus {
border: solid 2px red;
outline: none;
}
现在我在第二次单击 div 时使用标志(动作)来触发动作(警报),如果它已经聚焦,则只需单击一下,例如 TAB。
var action = false;
$('div')
.click(function(e){
e.stopImmediatePropagation();
if(action){alert('action');}
action = true;})
.focus(function(){action = true;})
.blur(function(){action = false;});
上面代码的问题是焦点事件被触发,这意味着 stopImmediatePropagation 没有按我预期的方式工作。两次单击操作可以注释焦点事件行,但是当 div 获得时您仍然需要双击专注于 TAB。 示例如下:http://jsfiddle.net/3MTQK/1/
【问题讨论】:
标签: javascript jquery jquery-events