8

li要素ブロックを水平方向に実行するonkeydown関数を作成しましたが、完全に実行されますが、最初と最後のliブロックがフォーカスされているときに左右のキーが無効になる必要があります。

誰かが正しい方法を提案できますか? 事前にサンクス!!!

$(document).ready(function() {
    var winht = $(window).height();
    var contUl = $('.content ul').children('li').size();
    var widLi = $('.content ul li').width();
    var contUlAndLI = contUl * widLi;
    var leftIndex = $('.content ul').css('left','0');
    $('.content ul').width(contUlAndLI);
    $('#frame').height(winht);

$("body").keydown(function(e) {

  if(e.keyCode == 37) { // left
    $(".content ul").animate({
      left: "-=980"
    });
  }
  else if(e.keyCode == 39) { // right
    $(".content ul").animate({
      left: "+=980"
    });
  }

});

if( leftIndex == 0){

    $("body").keydown(function(e) {

        if(e.keyCode == 39){ // right
            //event.preventDefault();
            return false;
            }

        });
  }

});

作業参照はjsfiddleです

4

1 に答える 1

1

ユーザーが左または右を押すたびに値がチェックされるカウンターを使用してそれを行いました。カウンターは、タグli内の要素の数です。ul

var ulCount = $('.content li').length - 1;
var i = 0;

次に、カウンターの値の範囲内にある場合にのみアニメーションを実行します。

if(e.keyCode == 37) { // left
    if (i < ulCount) {
        i++;
        $(".content ul").animate({
          left: "-=980"
        });
    }
}
else if(e.keyCode == 39) { // right
    if (i > 0) {
        i--;
        $(".content ul").animate({
            left: "+=980"
        });
    }
}

jsFiddleも更新しました。

于 2012-12-04T11:46:48.880 に答える