2010-05-09 5 views
2

Я хочу, чтобы альтернативные строки в моем столе были затенены. что это лучший способ сделать это, javascript, рельсы?Кодирование альтернативных затененных строк?

Сегодня я сделать простой <% NUM% 2%>, но это такая обычная операция, что я думаю, что должен быть умнее способ сделать это

+2

Почему что-то умнее? Я не думаю, что это становится более умным или более компактным, чем это, это язык агностик и здравый смысл и т. Д. И т. Д. - не исправляйте, если он не сломан! Modulo достаточно причудливый. – LukeN

+1

Выполнение этого с помощью JavaScript просто добавит время загрузки страницы для пользователя. Пока все браузеры не поддерживают CSS3 полностью, делать это на сервере - ваш лучший выбор. – epascarello

+4

Если вы хотите отказаться от поддержки IE, закажите селектор 'nth-child' для CSS3. – Anurag

ответ

6

Если вы хотите сделать это на стороне сервера, то путь, предназначенный для рельсов, предназначен для использования метода «цикл», который будет обрабатывать материал модуля 2, но также будет обрабатывать пространство имен, если вам нужно делать вложенные чередующееся затенение.

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M001753 

например.

<%= cycle("even", "odd", :name => "row_class") -%> 

имя просто используется, чтобы избежать столкновения, если у вас есть 2 цикла происходит в то же время, это необязательно.

+1

+1: если OP не хочет использовать modulo, то использование тогда предписанного метода для его платформы - это способ пойти – RedFilter

+0

спасибо! <% = цикл («четный», «нечетный»,: name => «row_class») -%> Почему «-» в конце -%> хотя? –

+0

Конечный -%> просто указывает ERB удалить любые пробелы после закрытия тэга%>. Как правило, это не обязательно, если вы просто пишете имя класса. Я только что написал это по привычке. – Michael

2

Вы можете сделать это очень легко с помощью JQuery, если это вариант. Ссылка на библиотеку jQuery в голове и в идеале дать таблице идентификатор или класс, чтобы вы могли идентифицировать его и создать класс, который получит половина строк. Затем добавьте это в свой javascript:

jQuery(document).ready(function() { 
jQuery('#table tr:even').addClass('stripes'); //could also be tr:odd 
}); 

Все, что угодно. Если вы не хотите, чтобы создать отдельный класс, вы всегда можете добавить стиль на лету:

jQuery(document).ready(function() { 
jQuery('#table tr:even').css({'backgroundColor: blue', 'font: red'}); 
}); 
+0

Возможно, мне что-то не хватает, но как бы вы определили, какие строки должны иметь атрибут tr: even? – Casey

+0

Что делает селектор, это только выбор строк, которые являются четными (0, 2, 4 и т. Д.), Так что вам не нужно. Если вы предпочитаете, вы можете установить его нечетным. Таким образом, каждая другая строка будет иметь ваш класс «stripes», прикрепленный/получающий декларацию стиля. – user97410

+0

Спасибо! Это хорошо знать. – Casey

2

На самом деле это встроенный в Rails - проверить «цикл» метод в ActionView помощникам.

Смежные вопросы