Из документации jQuery.index()
, среди множества примеров:
Возвращаемые значения
Если в метод .index()
не передается аргумент, возвращаемое значение является целым числом, указывающим позицию первого элемента в объекте jQuery относительно его родственных элементов.
Если .index()
вызывается для коллекции элементов и передается элемент DOM или объект jQuery, .index()
возвращает целое число, указывающее позицию переданного элемента относительно исходной коллекции.
Если в качестве аргумента передается строка селектора, .index()
возвращает целое число, указывающее позицию исходного элемента относительно элементов, совпадающих с селектором. Если элемент не найден, .index()
вернет -1.
Обратите внимание на последнее предложение. Видимо elem
просто не найден. Проверьте ваш селектор и / или элемент.
Обновление в соответствии с комментариями, вы, вероятно, звоните ему не в тот момент. Вот SSCCE, скопируйте и запустите его.
<!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>
Смотри также: