作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在,您可以使用箭头键浏览链接列表,它们会通过 css 突出显示,但我希望能够按 Return 继续到选定的链接被突出显示。关于如何做到这一点的任何想法?
抱歉,如果代码很乱,很新。
var li = $('li');
var liSelected;
$(window).keydown(function(e) {
if (e.which === 40) {
if (liSelected) {
liSelected.removeClass('selected');
next = liSelected.next();
if (next.length > 0) {
liSelected = next.addClass('selected');
} else {
liSelected = li.eq(0).addClass('selected');
}
} else {
liSelected = li.eq(0).addClass('selected');
}
} else if (e.which === 38) {
if (liSelected) {
liSelected.removeClass('selected');
next = liSelected.prev();
if (next.length > 0) {
liSelected = next.addClass('selected');
} else {
liSelected = li.last().addClass('selected');
}
} else {
liSelected = li.last().addClass('selected');
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="meny">
<ul>
<li id="start"><a href="Spill/spill.html">Start new game</a></li>
<li id="settings"> <a href="#">Setting</a></li>
<li id="help"> <a href="#">Help</a></li>
<li id="exit"> <a href="#">Exit</a></li>
</ul>
</div>
<!-- language: lang-css -->
li.selected {
color:white; font-size: 32px;}
a {
color:inherit;
}
a:focus {color:white; font-size: 32px; text-decoration: none;}
ul
{
text-decoration: none;
list-style-type: none;
}
<!-- end snippet -->
最佳答案
要完成这项工作,您可以监听返回键,代码 13,然后单击 li
中包含的 a
元素,该元素具有 .selected
类。但是,您应该注意,此行为可能会干扰您在 DOM 中拥有的任何 form
元素,并且如果您需要保持 ISO 合规性,也会破坏可访问性规则。
还请记住,您可以在向上/向下箭头键按下时干掉控制 li
元素选择的逻辑。试试这个:
var $li = $('li');
$(window).keydown(function(e) {
if (e.which === 40 || e.which === 38) {
e.preventDefault();
var goingDown = e.which === 40;
var $selected = $li.filter('.selected');
$selected.removeClass('selected');
var $target = $selected[goingDown ? 'next' : 'prev']();
if (!$target.length)
$target = $li[goingDown ? 'first' : 'last']();
$target.addClass('selected');
}
if (e.which === 13) {
var $selected = $li.filter('.selected');
if ($selected.length)
$selected.find('a')[0].click();
}
});
// only for debugging:
$('a').click(function(e) {
e.preventDefault();
console.log(`You clicked ${$(this).text()}!`);
});
.selected,
.selected a {
color: #C00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="meny">
<ul>
<li id="start"><a href="Spill/spill.html">Start new game</a></li>
<li id="settings"><a href="#">Setting</a></li>
<li id="help"><a href="#">Help</a></li>
<li id="exit"><a href="#">Exit</a></li>
</ul>
</div>
最后,请注意在箭头键处理程序中使用 preventDefault()
以在按下箭头键时停止滚动页面,这是标准行为。
关于javascript - 如何只能在选定的链接上按回车键继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52947059/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!