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

Posted

技术标签:

【中文标题】jQuery在悬停时为变量分配索引【英文标题】:jQuery assign index to variable on hover 【发布时间】:2011-12-01 21:56:10 【问题描述】:

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

);

【问题讨论】:

【参考方案1】:

试试这个:

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

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

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

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

索引() http://api.jquery.com/index/

【讨论】:

谢谢!我不得不将我的应用程序的代码更改为 i = $(this).index()-2,但它运行良好。【参考方案2】:

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

这是一个使用你的小提琴的例子,它将i 记录到控制台:http://jsfiddle.net/bupGk/1/

【讨论】:

以上是关于jQuery在悬停时为变量分配索引的主要内容,如果未能解决你的问题,请参考以下文章

何时在声明或初始化时为变量分配内存?

仅当元素悬停在 AngularJS 中时,如何分配变量?

2016 - 2 - 16 动态内存分配与静态内存分配

带有 noConflict 和分配 noConflict 变量的 jQuery

如何将 Jquery 变量值发送或分配给 php 变量? [复制]

从 jquery ajax 调用分配变量返回未定义