我对表格单元格的宽度有一些奇怪的问题。我尝试做的就是使用.width()函数获取表格单元格的宽度,然后在width属性中的同一单元格上设置该宽度:
$table.find('tr:first td').each(function () {
var actualWidth = $(this).width();
$(this).attr("width", actualWidth);
});
每次我这样做时,它会为某些单元格获得不同的宽度(通常会减少一个并增加另一个单元格)。
我在2012年看到了类似的问题:jQuery width() returning incorrect values on table cells 但它已经很老了,而且接受的答案似乎无法奏效。
小提琴:https://jsfiddle.net/awolf/40pj1b2u/
任何帮助将不胜感激。
答案 0 :(得分:1)
我认为其中有两个问题。所有都与表格单元格显示有关。
使用border属性(border =“1”)
<table>
可能会在读取时弄乱宽度值。设置attr('width')值时可能相同。为了匹配最接近的实际值,您可以使用 innerWidth()作为@Adam P建议。
表格单元格宽度取决于完整的可用表格宽度。在您的jsfiddle示例中,当扩展表区域时,单元格的宽度会增加。因此,从每个单元格宽度,您可以计算全局表格宽度,并应用它。
通过JS调整,看看你的https://jsfiddle.net/piiantom/72dvm0v4/。 表边框可以改变,JS仍然可以工作
答案 1 :(得分:0)
我认为这是一个错误。 我的解释: 读取宽度时,它会获得内容宽度。 设置时,框会被渲染,然后边框设置(每次从内容中获取1px)。 与.attr(),. prop()和.width()相同。
看一下box-sizing,.innerWidth()和.outerWidth()!