JQuery .index()问题
我遇到了以下代码问题。 我正在尝试检索当前正在hover的li
元素的索引。
HTML:
- foo
- bar
- giraffe
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上,很可能很多访问者会在缓存中有这个…如果没有…那么无论它是一个小文件..你将节省自己一个使用最新版本很多令人头疼的问题。