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。

07-24 09:37
查看更多