0

我正在运行这段代码。我的标记是一堆分类为替代的 DIV ,只有一个是活动的。

var currentTag = $(".alternative.active");
currentTag.removeClass("active");

if (event.which === 38 && currentTag.prev(".alternative").length !== 0)
  currentTag.prev(".alternative").addClass("active");

if (event.which === 40 && currentTag.next(".alternative").length !== 0)
  currentTag.next(".alternative").addClass("active");

这很好用,除了当我到达最后一个元素时,它从顶部开始。但是当我来到最顶层的元素时,它的行为与预期一样 - 没有采取任何行动。我的代码有逻辑问题吗?下一个元素是否以某种方式递归?

4

1 回答 1

3

您必须div .active始终保留 a 。currentTag.removeClass("active")因此,只有在有可接受的下一个(或上一个)可激活对象时才删除类 ( ):

var currentTag = $(".alternative.active");

if (event.which === 38 && currentTag.prev(".alternative").length !== 0) {
    currentTag.removeClass("active").prev(".alternative").addClass("active");
}
if (event.which === 40 && currentTag.next(".alternative").length !== 0) {
    currentTag.removeClass("active").next(".alternative").addClass("active");
}

在此处查看演示。

于 2013-07-10T17:10:44.987 回答