我有一个这样的清单:
<div class="list"></div>
<div class="list"></div>
<div class="list on"></div>
<div class="list"></div>
... etc
我得到这样的总数:
var count = $('.list').length; // 4 in this case
但我想写一个用向下箭头选择下一个div的函数,我无法弄清楚如何获得下一个div,选择它,并取消选择当前的div。这就是我现在所拥有的,但它不起作用:
var visible = $('.list:visible');
var on = $('.list.on:visible');
if (e.keyCode == 40) { // down key
if(on.length == 0) {
visible.first().addClass("on"); // this works
}
else if( // div placement // < count) {
var next = on.next(); // this part doesn't work
on.removeClass("on"); // :(
next.addClass("on"); // :(
}
else { // if its the last div
// do nothing
}
}
答案 0 :(得分:2)
你可以这样做:
if (e.keyCode == 40) { // down key
if(on.length == 0) {
visible.first().addClass("on");
}
else if(on.length && on.next("div.list").length > 0) {
var next = on.next("div.list");
on.removeClass("on");
next.addClass("on");
}
else { // if its the last div
// do nothing
}
}
答案 1 :(得分:0)
您可以使用.index()
查看当前“已选择”的项目:
var $items = $('.list:visible'),
$selectedItem = $items.filter('.on'),
selectedIndex = $items.index($selectedItem);
if (selectedIndex == -1) {
$items.eq(0).addClass('on');
} else if (selectedIndex + 1 < $items.length) {
$selectedItem.next().andSelf().toggleClass('on');
}
答案 2 :(得分:-2)
the else if (
部分中存在语法错误,您说它不起作用。
它不起作用,因为else if
期望一个条件要评估,但你甚至没有关闭那个if
条件的括号,也没有打开它的块的括号。