1

こんにちは、ユーザーが矢印キーの1つを押したままにすると、divを左または右に移動させる機能(stackoverflowにあります)を追加しました。すべてが正常に機能します。

「終了」に達した後、または一定量のピクセルを移動した後、divの移動を停止する方法があることを知りたいです。

私が持っているコードは以下です

$(document).keydown(function(e) {
switch (e.which) {
case 37:
    $('#block').stop().animate({
        left: '-=50'
    }); //left arrow key
    break;

case 39:
    $('#block').stop().animate({
        left: '+=50'
    }); //right arrow key
    break;

}
})
4

2 に答える 2

1

確かに、このフィドルを見てください: http://jsfiddle.net/ArtBIT/V7qcK/

var KEY = {
    LEFT: 37,
    RIGHT: 39
}
var boundaries = {
    left: 0,
    right: 200
}
$(document).keydown(function(e) {
    var position = $('#block').position();

    switch (e.which) {
    case KEY.LEFT:

        $('#block').stop().animate({
            left: Math.max(boundaries.left, position.left - 50)
        }); 
        break;

    case KEY.RIGHT:
        $('#block').stop().animate({
            left: Math.min(boundaries.right, position.left + 50)
        });
        break;
    }
});​

または、これはhttp://jsfiddle.net/ArtBIT/8PWCR/1/ 2D 移動用です

于 2012-08-15T13:41:05.937 に答える
0

現在offsetを取得してから処理します。

var max = 1000;

$(document).keydown(function(e) {
    switch (e.which) {

        case 37:
            if($('#block').offset().left > 50)
            {
                $('#block').stop().animate({ left: '-=50' });
            }
            break;

        case 39:
            if($('#block').offset().left < (max - 50)
            {
                $('#block').stop().animate({ left: '+=50' });
            }
            break;

    }
});
于 2012-08-15T13:34:40.750 に答える