jQuery在悬停时为变量分配索引

时间:2011-12-01 21:56:11

标签: jquery html

我正在使用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 );
    }

});

2 个答案:

答案 0 :(得分:1)

试试这个:

i = $(this).index()-1 

没有参数的Index()给出了相对于其兄弟元素的索引。 小提琴:http://jsfiddle.net/bgg92/

eq()返回一个jQuery对象,而不是一个整数。

当量() http://api.jquery.com/eq/

指数() http://api.jquery.com/index/

答案 1 :(得分:0)

而不是i = $(this).eq(),请使用i = $(this).index()

以下是使用您的小提琴的示例,该小提琴会将i记录到控制台:http://jsfiddle.net/bupGk/1/