gpt4 book ai didi

javascript - 带列表的窗口滚动

转载 作者:行者123 更新时间:2023-11-28 05:11:26 25 4
gpt4 key购买 nike

我正在尝试在页面顶部创建可导航列表。所以我有 <ul>与一些<li>里面。我不需要显示完整列表,因为我可能有很多。我需要有机会用键盘在这个列表中导航。我加到li的tabindex='0'属性。问题是,在聚焦底部元素后,窗口开始随列表滚动。

HTML:

<ul>
<li tabIndex="0">item 1</li>
<li tabIndex="0">item 2</li>
<li tabIndex="0">item 3</li>
<li tabIndex="0">item 4</li>
<li tabIndex="0">item 5</li>
<li tabIndex="0">item 6</li>
<li tabIndex="0">item 7</li>
<li tabIndex="0">item 8</li>
<li tabIndex="0">item 9</li>
<li tabIndex="0">item 10</li>
<li tabIndex="0">item 11</li>
<li tabIndex="0">item 12</li>
<li tabIndex="0">item 13</li>
<li tabIndex="0">item 14</li>
<li tabIndex="0">item 15</li>
<li tabIndex="0">item 16</li>
</ul>

JS:

$('li').on('focus', function() {
$(this).addClass('focused');
});

$('li').on('focusout', function() {
$(this).removeClass('focused');
});

$('li').keydown(function (e) {
if (e.keyCode == 38) {
$(e.target).prev().focus();
}
if (e.keyCode == 40) {
$(e.target).next().focus();
}
});

fiddle :https://jsfiddle.net/xne2p3mo/1/

最佳答案

e.preventDefault(); 放在 keydown 回调中,或者您也可以检查它何时应该阻止默认设置,例如滚动窗口。

$('li').keydown(function (e) {
if (e.keyCode == 38 || e.keyCode == 40) {
e.preventDefault();
}
e.preventDefault();
if (e.keyCode == 38) {
$(e.target).prev().focus();
}
if (e.keyCode == 40) {
$(e.target).next().focus();
}
});

关于javascript - 带列表的窗口滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com