Jquery过滤器可替代css的结构伪类

时间:2012-07-02 08:48:36

标签: javascript jquery html css

更新:抱歉,我的IE 9配置不好:应该设置它以便它接受使用ActiveX元素。我做完之后效果很好。对不起,这是一个扰动。

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

初始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过滤器的表达式是什么?

提前致谢

1 个答案:

答案 0 :(得分:2)

更新:我没有意识到你为多个tr做了这个。这是合适的解决方案

$("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/