2012-12-04 27 views
8

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

誰でも丁寧な方法を提案できますか?あらかじめThanx !!!

$(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

答えて

1

あります。カウンタは、ulタグの内部にあるli要素の数だけです。我々は、カウンタの値の範囲内なら

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を更新しました。

+0

摺動領域は980固定ですが、動的である可能性がありますか?私はウィンドウの幅のサイズを意味する? – matthewb

+1

@matthewb:確かに、更新された[jsFiddle](http://jsfiddle.net/R9cmH/14/)を見てください。 – Antti29

関連する問題