不确定为什么会这样。但每次我(elem).index();
时,它总会返回-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>