我有一张包含一些长文本和一些短文本的表格。如果<td>
包含长文本,我想增加宽度。
这就是我试图做的事情:
var text = $('td').text().split('\n');
if(text.length === 1) {
$(this).css('width','270px');
}
jsFiddle
我尝试使用alert(text.length)
得到换行符的数量,然后我得到1.然后,如果有1个换行符,我添加了.css('width','270px')
,但是不起作用。我做错了什么?
感谢您的帮助!
答案 0 :(得分:2)
我抓住了你想要做的事情:
var $tds = $('td');
$tds.each(function(){
var $td = $(this), length = $.trim($td.text()).length;
if( length > 22 ) {
$td.css('background-color', 'red');
}
});
如果不是这样可以让你更接近你的目标。这是一个更新的小提琴:http://jsfiddle.net/dsc4m/6/
答案 1 :(得分:2)
我猜你不能使用split('\n')
来检测文本是否分成多行,因为浏览器会自动插入这些换行符以进行布局,但它们不会作为{{1}存在在文中。
我建议比较单元格的渲染高度,以计算内部的行数。
<强>更新强>
感谢Bill,这是一个很好的观点。每行中的单元总是具有相同的高度。我想到的第一个解决方案是在单元格内部使用包装器div。它们只会根据显示文本的需要进行扩展。这不是“好”但似乎可以完成这项工作:http://jsfiddle.net/dsc4m/7/