JQuery选择器:visible和.next不起作用

时间:2014-12-17 21:57:56

标签: jquery html

当用户单击键盘上的向下箭头(keydown事件)时,我通过将.selected添加到css类来更改ul中的选定列表项。

下面的行可以在keydown事件下的小提琴中找到。它适用于数字,日期,但是当它们输入文本框时,不会识别列表中的最后一项。

重现的步骤。 1)打开小提琴2)输入任何字母3)尝试使用向下箭头到达“All”li。

selected.next(".liSearchType:visible").length == 0

jsfiddle

我一直在努力解决这个问题,但我认为有人可能已经遇到过这种情况。所有帮助表示赞赏。我试过更改jquery版本,没有爱。我试过在ul中操纵li的顺序,没有帮助。

1 个答案:

答案 0 :(得分:3)

问题是.next只检查下一个兄弟(不是所有下一个兄弟姐妹),因此,因为你在两个可见的兄弟之间有一个不可见的.liSearchType,当它检查时next元素,它按:visible过滤,长度为0。

解决方案是将.nextAll.first结合使用:

http://jsfiddle.net/3mu8cjsa/

if (selected.nextAll(".liSearchType:visible").length == 0) {
  selected.siblings(".liSearchType:visible").first().addClass("selected");
} else {
  selected.nextAll(".liSearchType:visible").first().addClass("selected");
}