2009-11-25 2 views
1

У меня есть таблица с несколькими строками - я назначил функцию зависания для каждой строки. что я хочу узнать в моей функции наведения, если выбранный TR нечетный или четный.jQuery: нечетный селектор

Я использовал этот код:

alert(tr.is(":odd")); 

, к сожалению, она не работает, хотя он должен я всегда получаю «ложь» (?).

Я пытался получать RowIndex непосредственно от элемента TR, как:

alert(tr.is(":odd")+"/"+tr.get(0).rowIndex); 

странная вещь: я получаю правильный RowIndex, но всегда Ложные от: нечетного собственности.

что не так?

ответ

5

Псевдоселектор :odd зависит от элемента, выбранного в контексте или результирующем наборе. Например: $('ul li:odd') будет выбирать нечетные элементы из этого контекста. Я предложил бы использовать этот тест вместо:

var odd = (tr[0].rowIndex % 2 == 0); 

Все остальные строки будут возвращать true из этого выражения. Поскольку rowIndex основано на нуле, мы используем value % 2 == 0. Если бы это было основано, вы бы использовали value % 2 == 1 для получения нечетных строк.

+0

имеет смысл. благодаря! – Fuxi

3

Селектор :odd удаляет элементы с четными номерами из набора.

При вызове .is() набор, на котором он смотрит, содержит только ваш единственный элемент tr. Так как он будет в индексе 0 в этом наборе, он всегда будет :even.

1

Это странно. :)

Но если серьезно, один элемент всегда является элементом 0 этого списка, который является четным. Чтобы иметь четные/нечетные различия, вам нужно иметь список. То, что большинство людей делает, это запустить некоторую функцию нагрузки, которая добавляет класс к нечетным элементам.