2010-05-09 40 views
2

我希望表格中的替代行被遮蔽。什麼是最好的方式來做到這一點,JavaScript,鐵軌?編碼替代陰影行?

今天,我做了一個簡單<%NUM%2%>,但是這是這樣一個共同的操作,我認爲應該有做

+2

爲什麼更智能?我認爲它沒有比這更聰明或更緊湊,它是語言不可知的和常識等等 - 如果它沒有被破壞,不會修復!模數足夠花哨。 – LukeN 2010-05-09 23:32:42

+1

使用JavaScript做到這一點只會增加用戶的頁面加載時間。在所有瀏覽器完全支持CSS3之前,在服務器上做這件事是最好的選擇。 – epascarello 2010-05-09 23:43:08

+4

如果您願意放棄IE瀏覽器支持,請檢查CSS3的'n-child'選擇器。 – Anurag 2010-05-09 23:45:15

回答

6

如果你願意在服務器端做,它的方式是讓你使用「循環」方法,這將處理模數2的東西,但也將處理命名空間,如果你需要做嵌套交替陰影。

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

例如

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

名字只是用於避免碰撞,如果你有2個週期的同時回事,它是可選的。

+1

+1:如果OP不想使用模數,那麼使用他的平臺規定的方法是要走的路數 – RedFilter 2010-05-10 00:00:37

+0

謝謝! <%= cycle(「even」,「odd」,:name =>「row_class」) - %> 爲什麼「 - 」在 - %>結尾? – 2010-05-10 03:35:50

+0

追蹤 - %>只是告訴ERB在關閉%>標記後刪除任何空格。如果你只是寫出一個類名,通常是沒有必要的。我只是把它寫出來的習慣。 – Michael 2010-05-10 05:59:00

2

你可以做到這一點很容易使用jQuery一個更聰明的方式,如果這是一個選項。鏈接到頭部的jQuery庫,理想情況下爲該表提供一個id或class,以便可以識別它,並創建一半行將獲得的類。然後,把它放在你的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 2010-05-09 23:57:20

+0

選擇器正在做什麼只是選擇偶數行(0,2,4等),以便您不需要。如果您願意,可以將其設置爲奇數。所以每一行都會有你的'條紋'類附加/接受樣式聲明。 – user97410 2010-05-10 00:03:18

+0

謝謝!這很好。 – Casey 2010-05-10 00:22:02

2

這實際上是內置於導軌 - 檢查助手的ActionView的「循環」的方法。