【发布时间】:2017-09-30 22:07:50
【问题描述】:
我有图像 div 列表,并希望通过按下键盘上的右、左、上和下箭头在它们之间导航。我尝试了以下 jQuery,但是当我按下箭头时图像焦点永远不会改变。我想要图像边框当它收到焦点时会发光,以便用户知道选择了哪个。(我希望默认焦点始终位于第一个 div 上,始终在页面加载时)。任何人都可以帮我解决这个问题。提前致谢。
分区:
<div class="scroller">
<div id="Div1" style="display: visiable;">
<div class="image1">
<a href="javascript:doIt('10')">
<img src="./content/1/102.jpg" alt="..">Movie 1
</a>
</div>
<div class="image2">
<a href="javascript:doIt('11')">
<img src="./content/2/102.jpg" alt="..">Movie 2
</a>
</div>
<div class="image3">
<a href="javascript:doIt('12')">
<img src="./content/3/102.jpg" alt="..">Movie 3
</a>
</div>
<div class="image4">
<a href="javascript:doIt('13')">
<img src="./content/4/102.jpg" alt="..">Movie 4
</a>
</div>
</div>
</div>
jquery:
<script>
$(document).keydown(function (e) {
var index = $(":focus").index() + 1;
if (e.which === 37) {
alert("left:37");
$('div a:nth-child(' + (index - 1) + ')').focus();
} else if (e.which === 39) {
alert("right 39");
$('div a:nth-child(' + (index + 1) + ')').focus();
} else if (e.which === 38) {
alert("Up:38");
$('div a:nth-child(' + (index - 1) + ')').focus();
} else if (e.which === 40) {
alert("Down:40");
$('div a:nth-child(' + (index + 1) + ')').focus();
}
});
</script>
css:
<style>
.image {
float:left;
width: 50%;
}
img {
width:100%;
}
a:focus {
//border: 1px solid black;
outline: none;
border-color: #9ecaed;
box-shadow: 0 0 10px #9ecaed;
}
.container {
width:100%;
}
@media (max-width: 740px){
.image {
width: 100%;
}
}
div.scroller {
overflow:scroll;
}
</style>
【问题讨论】:
标签: javascript jquery css focus keydown