2012-12-04 65 views
8

我做了一個onkeydown函數,它能夠水平運行li元素塊,它運行完美,但是當第一個和最後一個li塊在焦點時,左右鍵應該被禁用。禁用第一個和最後一個元素的keyCode

任何人都可以提出一種方法嗎?感謝提前!

$(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元素的數量。

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太:

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

如果我們計數器的值範圍內那麼只有運行動畫。

+0

滑動面積是980修復它可以動態?我的意思是窗口寬度大小? – matthewb

+1

@matthewb:當然,看到更新[jsFiddle](http://jsfiddle.net/R9cmH/14/)。 – Antti29

相關問題