2010-07-06 40 views
5

Làm thế nào để tô màu các cột bảng (hoặc lẻ) bằng cách sử dụng jQuery? (mà không cần thêm các lớp học bằng tay)jQuery: làm nổi bật cả các cột (không phải hàng)

đánh dấu của tôi là:

<table> 
    <caption>Table caption</caption> 
    <thead> 
    <tr><th scope="col">Table header 1</th><th scope="col">Table header 2</th><th scope="col">Table header 3</th><th scope="col">Table header 3</th></tr> 
    </thead> 
    <tbody> 

     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 

     <tr><th scope="row">Table row header</th><td>Table data</td><td>Table data</td><td>Table data</td></tr> 
    </tbody> 
</table> 

(nó có thể có hoặc không chứa attribs phạm vi hoặc th tags)

Trả lời

6

Bạn có thể sử dụng :nth-child() selector cho việc này:

$('table tr :nth-child(2n)').css('background-color', '#eee'); 

You can see a demo here, phiên bản này thực hiện các cột, bất kể ô đó là <th> hoặc <td> bạn có thể thêm vào đó (ví dụ: td:nth-child(2n)) nếu bạn muốn làm chỉ một hoặc khác. Nếu bạn muốn chọn các cột khác, chỉ cần thực hiện 2n+1 thay thế.

+0

+1: Cảm ơn nhận xét của bạn trong câu trả lời của tôi và cung cấp các giải pháp ngay tại đây. – Sarfraz

+0

Cảm ơn, điều này hoạt động tốt (phiên bản trước đã làm một số loại cờ;) – Adrian

+0

Cần thêm đại diện để upvote :) – Adrian

1

Chỉnh sửa: Cập nhật để khắc phục sự hiểu lầm của tôi về câu hỏi.

này nên làm việc:

$('tr > :nth-child(even)').css('background-color','#eee'); 

hoặc

$('tr > :nth-child(odd)').css('background-color','#eee'); 
+0

Ken - OP là tô màu cột, không phải hàng. : o) – user113716

+0

@patrick: Rất tiếc, bạn đã đúng. –

+0

Điều này là tô màu hàng, tôi cần * cột * – Adrian

Các vấn đề liên quan