如何在不使用循环的情况下突出显示HTML表格列?

fre*_*ent 3 html jquery loops html-table syntax-highlighting

我有这样一张桌子:

<table>
  <thead>
    <tr>
     <th id="col-1"><input type="button" class="some" value="Company" /></th>
     <th>name</th>
     <th>Adress</th>
     <th>Zip</th>
     <th>Place</th>
     <th>Country</th>
    </tr>
   </thead>
   <tbody>
    <tr class="even">
     <td headers="col-1">Some ltd</td>
     <td>some name</td>
     <td>some street</td>
     <td>some zip</td>
     <td>some town</td>
     <td>some country</td>
    </tr>
    <tr class="odd">
     <td headers="col-1">Corp</td>
     <td>some name</td>
     <td>some street</td>
     <td>some zip</td>
     <td>some town</td>
     <td>some country</td>
    </tr>
   </tbody>
 </table>
Run Code Online (Sandbox Code Playgroud)

奇数和偶数行有不同的高亮类奇数高.

单击列标题我想突出显示如下列:

$(".some").live("click", function() {
   var val = $(this).closest("TH, th").attr('id'),
       col = $( "td[headers="+ val +"]" ),
       // set odd/even
       i = col.closest("TR, tr").hasClass("odd") ? "oddHigh" : "evenHigh";

   col.hasClass("colHigh") ? col.removeClass("colHigh "+i) : col.addClass("colHigh "+i);
   });
Run Code Online (Sandbox Code Playgroud)

这突出了整个列与oddHigh.

是否有一种方法可以突出显示取决于最接近行的类而不循环整个选择?或者我是否需要将colOdd设置为tr.odd td ...并将colEven设置tr.even td ..并使用2个单独的语句?

c4u*_*elf 5

如果您的浏览器支持,您可以使用css :even:oddcss伪类选择器.也

tr:nth-child(odd)
Run Code Online (Sandbox Code Playgroud)

tr:nth-child(even)
Run Code Online (Sandbox Code Playgroud)

请参阅http://caniuse.com/#search=nth-child了解兼容性.(没有IE 6,7,8)