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

标签 javascript jquery html indexing

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。

关于javascript - jQuery .index(),将更改与参数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607079/

相关文章:

html - 如何在中间垂直对齐图像和文本?

javascript - 使用 Javascript 替换选择框中的金额

javascript - 向 BufferGeometry 添加索引不起作用?

javascript - ionic 建筑类型错误: env. runcmd不是一个函数

javascript - KnockoutJS 复选框与 CSS 绑定(bind)

javascript - 并排固定 div - 一个覆盖另一个

javascript - HTML5 必需的属性通过 jQuery 触发操作

javascript - Vanilla Bootstrap 导航栏链接不可点击

jquery validate radio input with css background hack

html - HTML 5 是否足够成熟,可以用于生产网站?