2012-12-04 10 views
8

Ho eseguito una funzione onkeydown che esegue blocchi di elementi in orizzontale, ma funziona perfettamente, ma ho bisogno di disabilitare i primi e gli ultimi blocchi di li in focus.disabilita keyCode per il 1 ° e l'ultimo elemento

qualcuno potrebbe suggerire un modo corretto? Grazie in anticipo !!!

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

     }); 
    } 

}); 

riferimento di lavoro è jsfiddle

risposta

1

ho fatto utilizzando un contatore il cui valore viene controllato ogni volta che l'utente preme a sinistra oa destra. Il contatore è semplicemente il numero di elementi li all'interno del tag ul.

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

Quindi eseguite solo l'animazione se siamo entro i valori del contatore:

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

ho aggiornato il jsFiddle troppo.

+0

l'area di scorrimento è 980 correzione potrebbe essere dinamica? intendo la larghezza della finestra? – matthewb

+1

@matthewb: Certo, guarda aggiornato [jsFiddle] (http://jsfiddle.net/R9cmH/14/). – Antti29

Problemi correlati