0

更新:对不起,我的 IE 9 没有配置好:它应该被设置为接受使用 ActiveX 元素。在我这样做之后,它工作得很好。抱歉打扰了。

问题:我想更改每个第三个表格列的颜色。

初始 DOM

  <table border="1">
    <tr><td>TD #0</td><td>TD #1</td><td>TD #2</td></tr>
    <tr><td>TD #3</td><td>TD #4</td><td>TD #5</td></tr>
    <tr><td>TD #6</td><td>TD #7</td><td>TD #8</td></tr>
  </table>

结果 DOM

  <table border="1">
    <tr><td>TD #0</td><td>TD #1</td><td>-here my color changed green- TD #2</td></tr>
    <tr><td>TD #3</td><td>TD #4</td><td>-here my color changed green- TD #5</td></tr>
    <tr><td>TD #6</td><td>TD #7</td><td>-here my color changed green- TD #8</td></tr>
  </table>

为了实现这一点,我尝试了一个 CSS-3 伪类:

$("tr td:nth-child(3)").css("color", "green");

它在 FF、Chrome 中运行良好 .. 但在 IE 9 中失败。

相应的 Jquery 过滤器的表达式是什么?

提前致谢

4

1 回答 1

2

更新:我没有意识到您正在为多个trs 执行此操作。这是适当的解决方案

$("tr").each(function(){
    $(this).children("td:eq(2)").css("color","red");
});

以下解决方案仅适用于第一个tr.

jquery selctor 返回一个 dom 元素数组,因此您始终可以使用简单的数组索引直接获取元素。

var elem = $("tr td")[2];
$(elem).css("color","red");

这也可以,因为它是原生 jQuery 并且不依赖于 css:

$("tr td:eq(2)").css("color", "red");

注意:这两种技术都使用基于 0 的索引

http://api.jquery.com/eq-selector/

于 2012-07-02T08:52:33.113 回答