jquery - 禁用第一个和最后一个元素的 keyCode

标签 jquery jquery-plugins jquery-selectors

我制作了一个 onkeydown 函数,它水平运行 li 元素 block ,它运行完美,但我需要当第一个和最后一个 li block 处于焦点时,左右键应该被禁用。

有人能建议一个正确的方法吗?提前感谢!!!

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

最佳答案

我通过使用一个计数器来做到这一点,每次用户按左或右键时都会检查该计数器的值。计数器只是 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也是。

关于jquery - 禁用第一个和最后一个元素的 keyCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701047/

相关文章:

javascript - 使用 Jquery 检测选择列表的更改

jQuery 1.6.2 升级导致元选择器出现问题

javascript - 创建一个非常简单的 jQuery 插件,不工作

左对齐时 jquery 选择器在该行的最后一个拇指(高级 jquery)

javascript - 如何覆盖弹出菜单上的 Weebly Javascript?

javascript - 从文本创建对象

jquery - 当用户在其外部单击时,如何在 twitter bootstrap 3.1 模式对话框中的单击事件之前防止模糊事件。!

javascript - 停止一个 div 的背景颜色覆盖另一个 div 的内容,旋转并因此重叠,div

javascript - flot:在轴上显示单位?

javascript - 检查 jQuery Plugin 是否已应用于 Element