Jquery 是否可以在不指定每行中的类的情况下对表列进行全局文本对齐?

Jquery 是否可以在不指定每行中的类的情况下对表列进行全局文本对齐?,jquery,css,Jquery,Css,想知道什么是提高效率的最好方法,也许是使用jQuery。我可以接受不符合ie7的解决方案,如果需要,即使缺少对ie8的支持也可以 <style type="text/css"> .cal {text-align:center} .ral {text-align:right} </style> <table> <th> <td class="cal">center</td> <td>left</td

想知道什么是提高效率的最好方法,也许是使用jQuery。我可以接受不符合ie7的解决方案,如果需要,即使缺少对ie8的支持也可以

<style type="text/css">
.cal {text-align:center}
.ral {text-align:right}
</style>
<table>
 <th>
  <td class="cal">center</td>
  <td>left</td>
  <td class="cal">center</td>
  <td>left</td>
  <td class="ral">right</td>
 </th>
 <tr>
  <td class="cal">center</td>
  <td>left</td>
  <td class="cal">center</td>
  <td>left</td>
  <td class="ral">right</td>
 </tr>
 <tr>
  <td class="cal">center</td>
  <td>left</td>
  <td class="cal">center</td>
  <td>left</td>
  <td class="ral">right</td>
 </tr>
</table>

.cal{text align:center}
.ral{文本对齐:右}
居中
左边
居中
左边
正确的
居中
左边
居中
左边
正确的
居中
左边
居中
左边
正确的
这样行吗

table td { text-align: center; }
table td:last-child { text-align: right; }
不幸的是,IE8不支持这一点。另一种选择是使用JavaScript(例如jQuery,因为您已经用它标记了这篇文章):

这个问题似乎被广泛接受,尽管这是一个你能得到的最丑陋的黑客:

最后,您可以进行一些欺骗,将最后一列的单元格作为
元素,然后使用以下元素轻松设置其样式:

table th { text-align: right; }

它在语义上不一定正确,但它是另一个快速简单的选择。我假设您的原始帖子中现有的
元素都是打字错误。

您可以使用jQuery在每行的第五个td中添加一个类,并设置该类的样式,使文本向右对齐

或者(我这样做的方式)使用

它与IE 8.0不兼容,但比基于JavaScript的解决方案简单得多。


<style>
td:first-child, td:first-child + td + td {
  text-align: center;
}
td:first-child + td + td + td + td {
  text-align: right;
}
</style>
<table>
<col align=center>
<col align=left>
<col align=center>
<col align=left>
<col align=right>
td:第一个孩子,td:第一个孩子+td+td{ 文本对齐:居中; } td:第一个孩子+td+td+td+td+td{ 文本对齐:右对齐; }
样式表在相当新的浏览器上工作。我省略了将对齐设置为左侧的规则,因为这是
td
的默认设置,但是如果其他样式表可能影响对齐,您可能需要添加此类规则

col
标记充当备份:根据规范,它们使用的方法不应该工作,但实际上可以在旧版本的IE上工作(以及在Quirks模式下的新版本)


请参阅其他过滤器

我认为:最后一个孩子的兼容性略好于第n个孩子,+1代表体育精神。我认为它们大致相同。Ref:这将起作用,根据提示,我发现了一个伟大的解决方案,通过应用jQuery样式(仅在使用ie时)对ie有更广泛的支持。解决方案甚至附带了一个JSFIDLE演示
tr td:nth-child(odd) {
    text-align: center;
}

tr td:nth-child(5) {
    text-align: right;
}
<style>
td:first-child, td:first-child + td + td {
  text-align: center;
}
td:first-child + td + td + td + td {
  text-align: right;
}
</style>
<table>
<col align=center>
<col align=left>
<col align=center>
<col align=left>
<col align=right>
$('td:first-child').css('text-align', 'left');
$('td:nth-child(2)').css('text-align', 'center');
$('td:last-child').css('text-align', 'right');