jQuery .index(),将更改与参数混淆

jQuery .index(), confusing changes with argument

本文关键字:参数 index jQuery      更新时间:2023-09-26

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。