2012-12-04 17 views
8

Zrobiłem funkcję onkeydown, która uruchamia bloki li elementów poziomo działa idealnie, ale potrzebuję, gdy pierwszy i ostatni blok L bloków klawiszy lewy i prawy powinien się wyłączyć.disable keyCode dla pierwszego i ostatniego elementu

Czy ktoś może sugerować sposób Corrent? Z góry z góry !!!

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

     }); 
    } 

}); 

wzorca roboczego jest jsfiddle

Odpowiedz

1

Zrobiłem to za pomocą licznika, którego wartość jest sprawdzana za każdym razem, gdy użytkownik naciśnie klawisz w lewo lub w prawo. Licznik to po prostu liczba elementów li wewnątrz znacznika ul.

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

Tylko wtedy uruchomić animację, czy jesteśmy w zasięgu wartości licznika:

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" 
     }); 
    } 
} 

zaktualizowałem jsFiddle też.

+0

obszar przesuwu to 980 fix może być dynamiczny? mam na myśli szerokość okna? – matthewb

+1

@matthewb: Oczywiście, zobacz zaktualizowane [jsFiddle] (http://jsfiddle.net/R9cmH/14/). – Antti29

Powiązane problemy