使所有单元格的宽度相同(使用jQuery?)

使所有单元格的宽度相同(使用jQuery?),jquery,html,css,Jquery,Html,Css,如果我有以下表格结构: <table cellpadding="0" cellspacing="0" border="0" width=100%> <tr> <th> </th> <th> Col Header 1 </th> <th> Col Header 2 </th> <th> Col Header 3

如果我有以下表格结构:

<table cellpadding="0" cellspacing="0" border="0" width=100%>
<tr>
    <th>
    </th>
    <th>
    Col Header 1
    </th>
    <th>
    Col Header 2
    </th>
    <th>
    Col Header 3
    </th>
</tr>
<tr>
    <th>
    Row Header
    </th>
    <td>
    cell 1
    </td>
    <td>
    cell 2
    </td>
    <td>
    cell 3
    </td>
</tr>
</table>

列标题1
列标题2
列标题3
行标题
第1单元
第2单元
第三单元
如何使所有TDs的宽度相同?请注意,我在行首有TH。如果需要,我可以使用jQuery


编辑:

根据下面的建议,我开始更加倾向于jQuery解决方案。基本上我需要做的是:

  • 得到一张桌子的宽度
  • 在行的开头获得宽度TH
  • 从1中减去2
  • 将其余部分除以TDs的数量

  • 我认为这有点复杂,但应该可以完成这项工作…

    有什么原因不能使用CSS吗

    td {
        width: 300px;
    }
    
    如果希望所有TD:s和TH:s的宽度相同,只需在TH上设置宽度:

    th {
        width: 300px;
    }
    
    TD:s将从列获取其宽度,而列将从TH:s获取其宽度

    编辑:对您的问题进行编辑使您更容易理解您想做什么:)

    我肯定会考虑使用CSS Flexible Box Model(flexbox)来实现兼容浏览器

    您可以使用Modernizer检查flexbox兼容性:

    由于可能需要用JavaScript执行代码所需的代码混乱,我还将考虑启用的浏览器是否真的需要这个特性。 但这并不是说用javascript实现它是不可能的,一点也不可能

    如果表中的数据在加载后是静态的,那么获取表和第一列的宽度,并将剩余部分拆分到其余的列上,应该是非常直接的

    但是,如果表的内容在最初加载后可能会更改,则需要整理如何检查更改并每次重新应用新样式。您可能会放置一些事件侦听器,但需要侦听哪些事件取决于哪些操作可能会更改表的内容


    此外,请记住,用户可能会缩放网页的文本。这可能也会弄乱列的宽度,我想…

    你可以用css来完成。
    如果你需要的话,你应该加上th。 差不多

    table tr td
    {
        width: 400px;
    }
    
    或者,使用jquery

    $('table tr td').each(function() {$(this).css('width','400px');});
    
    或修订(阿德里安)


    当您知道表格的像素宽度时,设置
    td
    宽度的样式就更容易了

    例如,如果
    width=300px
    ,则每个
    td
    可以设置为100px

    但是,如果您的表必须是
    width=100%
    ,则可以将每个
    td
    上的宽度设置为33%


    如果
    表上有
    填充
    边距
    、或
    边框
    ,这些都会影响
    td
    的宽度

    以百分比设置宽度:

    td, th { width: 33%; }
    

    只是一个想法,因为他在侧面(而不是顶部)使用ths,这不会只对齐他在顶部使用TH:s的第一列。请查看第一个TR的内容。否则,您将是正确的,是的。我不知道表的名称可能是什么。我的缺点是,我没有注意到第一个TR仅为ths。我在顶部使用TH——用于列标题,在每个TR的开头使用TH作为行标题。您不需要调用。each()--$('table TR td').css('width','400px');我也会做同样的事。啊,有一件事击中了我。您是否在询问如何根据内容使列的宽度不同,但将所有列的宽度设置为与最宽列的宽度相同?因为这将是一个完全不同于我们迄今为止所回答的问题。。。而且,这将是相当困难的一点。。。
    td, th { width: 33%; }