当使用键盘的tab键输入div时,我如何用jQuery“做些什么”?例如,当用户使用键盘tab按钮导航时,并且他们在下面的示例中输入“Inside”div,控制台日志不会触发,直到第二次按下tab按钮:
$('.inside').on('keydown', function(e) {
if (e.keyCode === 9) {
console.log('Inside');
}
});
.inside {
border: 1px solid black;
margin: 10px;
min-height: 300px;
padding: 20px;
}
.outside {
padding: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="outside text-center">
<a href="">Outside Link 1</a>
<a href="">Outside Link 2</a>
<a href="">Outside Link 3</a>
<a href="">Outside Link 4</a>
</div>
<div class="inside text-center">
<a href="">Inside Link 1</a>
<a href="">Inside Link 2</a>
<a href="">Inside Link 3</a>
<a href="">Inside Link 4</a>
</div>
</div>
3条答案
按热度按时间xhv8bpkk1#
尝试使用:
字符串
基本上,当使用'keydown'时,触发函数的侦听器会在焦点进入.inside div后等待tab按钮被按下。因此,如果你需要在焦点移动到.inside div时立即触发函数,那么你可以检查tab按钮是否在.inside div中“向上”
UPD:如果你需要它只在第一个链接时被触发,那么像这样的东西应该可以工作(代码有点乱,但它确实可以满足你的需要)
型
q3qa4bjr2#
你应该使用
keyup
事件。请注意,
keyCode
已弃用。最好使用key
。在下面的示例中,
event.currentTarget
始终是div.inside
元素。所以我们总是可以查询到:first-child
并将其与event.target
进行比较。pxiryf3j3#
监听DIV链接上的
focus
事件,如果前一个焦点元素在DIV之外,则对该事件做出React。适用于任何TAB导航方向和鼠标。