当用户单击键盘上的向下箭头(keydown事件)时,我通过将.selected添加到css类来更改ul中的选定列表项。
下面的行可以在keydown事件下的小提琴中找到。它适用于数字,日期,但是当它们输入文本框时,不会识别列表中的最后一项。
重现的步骤。 1)打开小提琴2)输入任何字母3)尝试使用向下箭头到达“All”li。
selected.next(".liSearchType:visible").length == 0
我一直在努力解决这个问题,但我认为有人可能已经遇到过这种情况。所有帮助表示赞赏。我试过更改jquery版本,没有爱。我试过在ul中操纵li的顺序,没有帮助。
答案 0 :(得分:3)
问题是.next
只检查下一个兄弟(不是所有下一个兄弟姐妹),因此,因为你在两个可见的兄弟之间有一个不可见的.liSearchType
,当它检查时next元素,它按:visible
过滤,长度为0。
解决方案是将.nextAll
与.first
结合使用:
if (selected.nextAll(".liSearchType:visible").length == 0) {
selected.siblings(".liSearchType:visible").first().addClass("selected");
} else {
selected.nextAll(".liSearchType:visible").first().addClass("selected");
}