我正在使用this script在一组DIV之间切换一个类。
键盘导航功能很好,但是如果你将鼠标悬停在DIV上,然后切换回使用键盘,你会发现脚本不记得你曾经过的最后一个DIV。它将继续记住您通过键盘导航到的最后一个DIV。
这是一个证明问题的JSFiddle:http://jsfiddle.net/bupGk/
我正在寻找的是正确的等式,它将使用列类计算悬停时任何给定DIV的索引值。
的jQuery
var i = -1;
var all = $('.column');
$('.column').hover(function(){
$('.column').removeClass('scroll'),
$(this).addClass('scroll'),
i = $(this).eq() /*problem area*/
});
function traverse(ele) {
all.removeClass("scroll");
all.eq(ele).addClass("scroll");
}
$(document).keydown(function(e){
if (e.which == 37) {
e.preventDefault();
traverse( i = !i ? all.length - 1 : --i );
}
if (e.which == 39) {
e.preventDefault();
traverse( i = ++i % all.length );
}
});
答案 0 :(得分:1)
试试这个:
i = $(this).index()-1
没有参数的Index()给出了相对于其兄弟元素的索引。 小提琴:http://jsfiddle.net/bgg92/
eq()返回一个jQuery对象,而不是一个整数。
答案 1 :(得分:0)
而不是i = $(this).eq()
,请使用i = $(this).index()
。
以下是使用您的小提琴的示例,该小提琴会将i
记录到控制台:http://jsfiddle.net/bupGk/1/