使用jQuery index()的正确方法; ?它总是返回-1

时间:2010-09-18 04:28:26

标签: jquery function indexing

不确定为什么会这样。但每次我(elem).index();时,它总会返回-1。这是为什么?

如何找到对象的索引?

1 个答案:

答案 0 :(得分:2)

来自jQuery.index() documentation,其中有很多例子:

  

返回值

     

如果没有向.index()方法传递参数,则返回值是一个整数,表示jQuery对象中第一个元素相对于其兄弟元素的位置。

     

如果在元素集合上调用.index()并传入DOM元素或jQuery对象,.index()将返回一个整数,指示传递的元素相对于原​​始集合的位置。

     

如果选择器字符串作为参数传递,.index()将返回一个整数,指示原始元素相对于选择器匹配的元素的位置。 如果找不到该元素,.index()将返回-1。

请注意最后一句话。显然找不到elem。验证您的选择器和/或元素。


根据评论

更新,您可能会在错误的时刻调用它。这是一个SSCCE,copy'n'paste'n'run it。

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>SO question 3740385</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            alert('Before DOM ready: ' + $(".nav ul li:first").index()); // Can return -1.

            $(document).ready(function() {
                alert('After DOM ready: ' + $(".nav ul li:first").index()); // Must return 0.
            });
        </script>
    </head>
    <body>
        <div class="nav">
            <ul>
                <li>item</li>
                <li>item</li>
                <li>item</li>
            </ul>
        </div>
    </body>
</html>

另见: