0

我希望用户能够使用箭头键移动的页面上有 2 个 div。我尝试通过使用焦点来区分它们,但是太多的项目(如输入)可以获得焦点。目前,当我单击 div 时,我正在应用带有虚线的“聚焦”css 样式以使其突出并从其他 div 中删除样式。

.focused{
  border: 1px dashed #cccccc;   
}


$('#tagCommon').click(function(){
  $(this).focus().addClass("focus2");
  $('#tagLatin').removeClass("focus2");
});

我认为将有助于拦截关键事件。

那么我怎样才能只移动具有 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;
    }
});

非常感谢你再次拯救我,托德

4

1 回答 1

4

我不确定你是否还需要解决方案,但你可以看看这个:http: //jsfiddle.net/ft2PD/41/

这是html

<div id='div1'>
    <input type='text' value='hello' />
</div>

<div id='div2'>
    <label> World</label>
</div>

​</p>

这是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;
}​
于 2012-06-15T00:48:55.673 回答