使用jQuery检测最宽的单元格

时间:2011-08-30 16:38:16

标签: jquery

我有一个具有不同值的表。第一列包含标签。我需要获得最宽标签的宽度。我假设我需要某种循环,但那又是什么?

$("#myTable td:nth-child(1)").width();

感谢。

5 个答案:

答案 0 :(得分:4)

var w = 0;
$("#myTable tr td:first").each(function(){
    if($(this).width() > w){
        w = $(this).width();
    }
});

答案 1 :(得分:3)

我假设您在第一列中的所有<label>元素中都有一个<td>元素(因为在同一列中比较<td>元素本身的宽度没有意义列他们同样宽(不考虑colspan != 1)):

var widestLabel = 0;
$("#myTable td:nth-child(1) label").each(function() {
    widestLabel = Math.max(widestLabel, $(this).width());
});

答案 2 :(得分:2)

试试这个:

var widest;
var widestWidth = 0;
$("#myTable td").each(function(t) {
    if($(this).width() > widestWidth){
        widest = $(this);
        widestWidth = $(this).width();
    }
});
//Now widest points to the widest element

注意我跟最宽的元素分开跟踪实际宽度。没有这种方法的替代解决方案是将width最大化为width = 0的虚拟元素,并将$(this).width()与widest.width()进行比较

编辑:或者,或者,现在我意识到你只想要宽度而不是实际元素,你可以使用这个版本:

var widestWidth = 0;
$("#myTable td").each(function(t) {
     widestWidth = Math.max(widestWidth, $(this).width());
});

答案 3 :(得分:2)

var widestTdLabel=0;
$('#myTable td').each(function(index) { 
    if($(this).find('label').width()>widestTdLabel)
        widestTdLabel=$(this).find('label').width();
});
alert(' width of the widest label is:'+widestTdLabel);

答案 4 :(得分:0)

这应该有用 - 它将遍历每个tds(在myTable中)并找到最宽的:

var widest = 0;
$("#myTable tr td:first").each(function()
{
     widest = ($(this).width() > widest) : $(this).width() : widest;
});

或者:

var widest = 0;
$("#myTable tr td:first").each(function()
{
     if($(this).width() > widest){
         widest = $(this).width()
     }
});