我有一个HTML表格,其中某些单元格有很长的文本内容。
我想使用jQuery为这些单元格指定宽度(以像素为单位),但渲染表只是忽略给定的宽度。
有没有办法强制表格尊重这个宽度?
谢谢!
JSFiddle :http://jsfiddle.net/sangil/6hejy/35/
(如果检查单元格,则可以看到计算出的宽度与元素样式宽度不同)
HTML :
<div id="tblcont" class="tblcont">
<table id="pivot_table">
<tbody>
<tr>
<th id="h0" >product</th>
<th id="h1" >price</th>
<th id="h2" >change</th>
</tr>
<tr>
<!-- this is the cell causing trouble -->
<td id="c00" >Acer 2400 aaaaaaaaaaaaaaaaaaaaaaaaaa</td>
<td id="c01" >3212</td>
<td id="c02" >219</td>
</tr>
<tr>
<td id="c10" >Acer</td>
<td id="c11" >3821</td>
<td id="c12" >206</td>
</tr>
</tbody>
</table>
</div>
CSS :
.tblcont {
overflow: hidden;
width: 500px;
}
table {
table-layout: fixed;
border-collapse: collapse;
overflow-x: scroll;
border-spacing:0;
width: 100%;
}
th, td {
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
}
th {
height: 50px;
}
的Javascript :
$(document).ready(function() {
// THIS LINE HAS NO EFFECT!
$('#c00').width(30);
});
答案 0 :(得分:7)
我可以从你的小提琴中看出,你已经很好地掌握了如何截断这样的词语。我认为您可能会发现执行以下操作很有用:
<table>
<colgroup>
<col style="width: 30px;" /> <!-- this style affects the whole 1st column -->
<col />
<col />
</colgroup>
<!-- the rest of your table here -->
</table>
此方法以符合标准的方式使用HTML规范 - 并将调整整个列的大小。如果您将单元格的display
更改为inline-block
,如上所述,将会发生的情况是您将单元格从表格流中取出 - 其他样式更改可能会停止工作。
通过使用上面的代码设置整个col
的样式,您可以使用table
元素的table-layout: fixed
样式代替。
此外 - 我注意到您已设置单元格以使用text-overflow: ellipsis;
在quirksmode上查看this article以了解它无法正常工作的原因。您需要的修复是进行以下编辑:
th, td {
border: solid #4682B4 1px;
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
text-align: center;
white-space: nowrap; /* Add this line */
}
答案 1 :(得分:6)
默认情况下,表格单元格符合其内容并忽略您的宽度。
已提供答案的其他可能性:
用其他容器包围文本:
<td id="c00" ><div>Acer 2400 aaaaaaaaaaaaaaaaaaaaaaaaaa</div></td>
改变宽度:
$('#c00 div').width(30);
答案 2 :(得分:2)
你有几个问题:
table-layout: fixed
告诉列相等。
然后,即使你把它拿出来,你的文字宽度超过30像素,没有空格,所以它不会比"aaaaaaaaaa"
等更窄。你需要让文字变小,或添加空格。
最后,width
应为"30px"
(引号中)。
希望有所帮助。
答案 3 :(得分:1)
试试这个:
$('#c00').css("width","30px");
或者这个:
<td id="c00" style='width:30px'>
如果您使用的是IE,则可能需要启用兼容模式。另外,请确保导入正确的jQuery插件。