javascript - jQuery .index() 的奇怪之处

标签 javascript jquery

我绝不是 jQuery(或 JavaScript)专家,所以如果我误解或忽略了某些内容,请原谅我。我有以下 HTML:

<html>
    <body>
        <div class="ted">Ted</div>
        <div class="ted">Ted</div>
        <div class="tim">Tim</div>
        <div class="ted">Ted</div>
        <div class="tim">Tim</div>
    </body>
</html>

以及以下 JS:

$('.ted').click(function() {
    alert($(this).index());
});

当我单击带有 '.ted' 类的 div 时,警报应显示该 div 的索引。

单击第一个 div 会发出警报“0”(预期),第二个 div 会发出警报“1”(预期)。但是,单击最后一个 '.ted' div (列表中的第四个)会警告“3” - 为什么这不给出索引 2? (因为 JS 数组是从 0 开始的)这是第三 '.ted' div

就好像 $('.ted') 实际上返回了列表中的所有 div?

示例如下:http://jsfiddle.net/nha2f/6/

最佳答案

.index() method docs明确这种行为。这是相关部分(已添加重点):

If no argument is passed to the .index() method, the return value is an integer indicating the position of the first element within the jQuery object relative to its sibling elements.

由于与选择器匹配的第三个元素实际上是其父元素的第四个子元素,因此它的索引为 3。

继续阅读文档以找到问题的解决方案:

If a selector string is passed as an argument, .index() returns an integer indicating the position of the original element relative to the elements matched by the selector.

因此,您可以将相同的选择器传递给.index(),它将返回元素相对于匹配集的索引:

alert($(this).index(".ted"));

关于javascript - jQuery .index() 的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760543/

相关文章:

javascript - 无法获取 Json-String 的属性

JavaScript - 函数无法访问另一个函数作用域中的变量

javascript - 在多维数组中查找条目,其中属性的一部分与给定文本匹配

javascript - 确定 toggleClass 是否添加或删除类

javascript - 交换gif时如何避免出现 "blink"?

jquery mobile 删除事件主题

javascript - nodejs View 不在布局中呈现

Javascript 增加输入结果并包含逗号

javascript - 将 select2 限制为仅接受电子邮件地址

jquery - 在附加列表项上添加 jQuery UI 按钮?