JQuery .index()问题

我遇到了以下代码问题。 我正在尝试检索当前正在hover的li元素的索引。

HTML:

  

JavaScript的:

 $(document).ready(function () { $('#featured ul li').hover(function(){ console.log($(this).index()); //returns -1 console.log($('li').index($(this))); //returns integers beginning at 6 }); }); 

我使用的javascript中的第一个选项返回-1,第二个选项返回从6开始的整数。

我迷路了。 请有人告诉我我做错了什么! 🙂

另外,我使用的是我的drupal安装1.2.6嵌入的jQuery版本

编辑:修复了我的JS示例的第二个console.log上的语法。

问题在于你的jquery版本,我用1.2.6,1.3.2进行了测试,它就像你说的那样工作,我用jQuery 1.4.4测试它并且它正在工作。 您是否考虑升级jquery的版本或加载较新的vwrsion并使用noConflict()?

编辑 – 你可以使用它作为一种解决方法:

  $('#featured ul li').hover(function(event){ console.log($(this).prevAll('li').length); //returns 0,1,2 }); 

小提琴(测试IE9,FF5和Chrome 12): http : //jsfiddle.net/WWw4n/

我认为你的语法是关闭的。 在这里工作: http : //jsfiddle.net/rkw79/4NA3T/

 $(document).ready(function () { $('#featured ul li').hover(function(){ alert($(this).index()); //returns -1 alert(('li').index($(this))); //returns integers beginning at 6 }); }); 

你可以向我解释第二次警报的语法吗? 为什么它不需要$符号? (jQuery新手)

你需要这样的东西;

  $('#featured li').index($(this)); 

解:

升级你的jquery:

许多网站使用最新版本1.6.2,它托管在谷歌CDN上,很可能很多访问者会在缓存中有这个…如果没有…那么无论它是一个小文件..你将节省自己一个使用最新版本很多令人头疼的问题。