2012-03-20 7 views
2

Возможно, это простая ошибка, но эта вещь сводит меня с ума. Я хочу знать, почему, черт возьми, эта строка jQuery возвращается -1?jQuery .index() возвращает отрицательное число

$('td[class!="traco"]:last').index('td.diaNormal') 

Прежде всего, когда эта функция возвращает отрицательное число? Почему это происходит? Спасибо, что все заранее, Фернандо.


EDIT:

Самая интересная вещь в том, что моя страница имеет элемент я ищу, а индекс JQuery просто возвращает -1.


EDIT2: Это мой HTML, http://jsfiddle.net/bv7SU/

+1

С каким HTML это выполняется? Можете ли вы опубликовать [live demo] (http: //jsfiddle.net/)? –

+0

Является ли отрицательное число -1? –

+0

Я боюсь, что HTML слишком большой, чтобы публиковать здесь, –

ответ

5

Это является довольно стандартным в модели программирования при выполнении поиска/находит, что обратные указатели для обозначения «не найден» с отрицательным числом минус единица (-1) (естественно, поскольку индексы будут начинаться с нуля (0)). Итак, то, что вы видите, является результатом успешного вызова (в том смысле, в котором он работал), который просто не нашел ничего, чтобы соответствовать вашим критериям.

Если бы это было не так, как бы вы определили, было ли что-то найдено или нет? Часто бывает необходимо провести различие между «, это сработало!», «это сработало, НО ... ", и" это не удалось! «

Иногда будет альтернативы, такие как метод просто так им и документально вести себя почти то же самое с другой стороны, но с разницей» бросить исключение на „работал, НО“ », что также часто полезно. Но вам, как правило, нужно следить за последними режимами, когда и когда они вам понадобятся.

+0

Это очень подробный и полезный ответ для человека с именем пользователя «Mr. Disappointment»! :) –

1

возвращает -1, если объект соответствующий селектор передается как .index(selector) не найден.

Из документации JQuery для .index():

Если строка селектора передается в качестве аргумента, .index() возвращает целое число, указывающее положение исходного элемента относительно элементов, совпавшего с селектор. Если элемент не найден, .index() вернет -1.

2

Я не знаю, если это ответ на который вы смотрите, но в соответствии с docs «индекс()» вернет -1, если Jquery не может найти какие-либо элементы, для которых вы пытающиеся смотреть.

EDIT: Я добавил код jQuery как onDomReady к вашему скрипту, и получаю индекс 29. Как вы используете код jQuery?

new fiddle

+0

, как я уже говорил перед своим другом, теперь я понимаю, что проблема заключается в следующем методе intead index(). Не знаю, почему это не работает здесь. :/ –

0

Ответ в documentation:

Если строка селектора передается в качестве аргумента, .index() возвращает целое число, указывающее положение исходного элемента относительно элементы, соответствующие селектору. Если элемент не найден, .index() вернет -1.