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”实例吗?
最佳答案
当您将选择器字符串传递给 .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/