2012-12-04 43 views
8

Tôi đã thực hiện một chức năng onkeydown chạy các phần tử li theo chiều ngang nó chạy hoàn hảo nhưng tôi cần khi các khối li đầu tiên và cuối cùng tập trung các phím trái và phải sẽ bị vô hiệu hóa.disable keyCode cho phần tử đầu tiên và cuối

bất kỳ ai cũng có thể đề xuất một cách khắc phục không? Thanx trước !!!

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

     }); 
    } 

}); 

tài liệu tham khảo làm việc là jsfiddle

Trả lời

1

tôi đã làm nó bằng cách sử dụng một bộ đếm giá trị trong số đó sẽ được kiểm tra mỗi lần người dùng nhấn trái hoặc phải. Bộ đếm chỉ đơn giản là số lượng các thành phần li bên trong thẻ ul.

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

Sau đó chỉ chạy các hình ảnh động nếu chúng tôi trong các giá trị của bộ đếm:

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

tôi cập nhật các jsFiddle quá.

+0

khu vực trượt là 980 sửa chữa có thể là động không? tôi có nghĩa là kích thước cửa sổ chiều rộng? – matthewb

+1

@matthewb: Chắc chắn, hãy xem cập nhật [jsFiddle] (http://jsfiddle.net/R9cmH/14/). – Antti29

Các vấn đề liên quan