如果文本中有换行符,如何扩展td的宽度?

时间:2013-12-09 14:32:16

标签: javascript jquery html-table

我有一张包含一些长文本和一些短文本的表格。如果<td>包含长文本,我想增加宽度。

这就是我试图做的事情:

var text = $('td').text().split('\n');
if(text.length === 1) {
    $(this).css('width','270px');
}

jsFiddle
我尝试使用alert(text.length)得到换行符的数量,然后我得到1.然后,如果有1个换行符,我添加了.css('width','270px'),但是不起作用。我做错了什么?

感谢您的帮助!

2 个答案:

答案 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/