http://learn.jquery.com/using-jquery-core/understanding-index/
也许我在上面的文章中错过了一些内容,但是我在理解为什么索引参数与.index()一起使用时为什么索引号会更改其方式时遇到了一些麻烦。
例如,
<body>
<button id="console2">consoleSection2</button>
<ul>
<div class="test"></div>
<li id="foo2">foo</li>
<li id="bar2" class="test">bar</li>
<li id="baz2">baz</li>
<div class="test"></div>
</ul>
<div id="last"></div>
</body>
如果我跑
console.log(
"Index: " + $("#foo2").index()
);
我得到“索引:1”,而如果我运行
“索引:” + $(“#foo2”)。index(“ li”)
我得到“索引:0”。
为什么会改变?对我来说,它将保持不变,因为“#foo2”已经在“ li”元素中。
另外,为什么它将索引设为0?那是因为它是ID为“#foo2”的“ li”的第一个实例吗?
http://jsfiddle.net/f88zxaxo/
最佳答案
当将选择器字符串传递给.index()
时,返回值指示第一个匹配元素在组成jQuery对象的元素列表中的位置。
在不带参数的情况下,.index()
会告诉您元素在同级元素中的HTML容器元素中的位置。
您从$("#foo2").index()
返回1,因为“ foo2”元素在包含<ul>
的元素中位于位置1(顺便说一句,这是无效的标记)。但是,您从$("#foo2").index("li")
返回0,因为jQuery对象中只有一个元素,而它是一个<li>
元素。如果您尝试使用$("#foo2").index("span")
,则会得到-1。