我在页面上有2个div,我希望用户能够使用箭头键移动。我尝试通过使用焦点来区分它们,但是太多的项目(如输入)可以获得焦点。目前当我点击div时,我正在应用一个带有虚线的“聚焦”css样式,以使其脱颖而出并从其他div中删除样式。
.focused{
border: 1px dashed #cccccc;
}
$('#tagCommon').click(function(){
$(this).focus().addClass("focus2");
$('#tagLatin').removeClass("focus2");
});
我认为this可以拦截关键事件。
那么我怎样才能移动具有focus2类的对象?类似的东西:
$(document).keydown(function(e) {
switch (e.which) {
case 37:
$('only the div that has class focus2').stop().animate({
left: '-= 10'
}); //left arrow key
break;
}
});
非常感谢你再次拯救我, 托德
答案 0 :(得分:4)
我不确定您是否还需要解决方案,但您可以查看以下内容: http://jsfiddle.net/ft2PD/41/
这是html
<div id='div1'>
<input type='text' value='hello' />
</div>
<div id='div2'>
<label> World</label>
</div>
这是javascript:
$(document).ready(function(){
$('#div1,#div2').click(function(){
$('div.selected').removeClass('selected');
$(this).addClass('selected');
})}).keyup(function(e){
var div = $('div.selected');
console.log(div);
console.log(e.which);
switch (e.which) {
case 37:
$(div).stop().animate({
left: '-=10'
}); //left arrow key
break;
case 38:
$(div).stop().animate({
top: '-=10'
}); //up arrow key
break;
case 39:
$(div).stop().animate({
left: '+=10'
}); //right arrow key
break;
case 40:
$(div).stop().animate({
top: '+=10'
}); //bottom arrow key
break;
}
});
并持续使用CSS
#div1
{
position: absolute;
width:100px;
height:100px;
margin:15px;
padding:15px;
border: thin solid #D2D2D2;
}
#div2
{
position: absolute;
width:50%;
margin:15px;
padding:15px;
border: thin solid #D2D2D2;
}
.selected
{
border: 1px dashed #cccccc !important;
}