2010-03-01 41 views
2

我们可以将JQuery用于创建等高的列吗?如果是,如何?与JQuery等高的列

谢谢

+0

表格行的所有单元格应该具有相同的高度。同样,表的所有列应具有相同的高度,这可以由table.style.height定义?还是我误解? – Warty 2010-03-01 08:07:24

回答

13

循环遍历每列,找到最高。然后全部设置到那个高度。

var maxHeight = 0; 
$(".column").each(function(){ 
    maxHeight = $(this).height() > maxHeight ? $(this).height() : maxHeight; 
}).height(maxHeight);​ 

在线演示:http://jsbin.com/afupe/2/edit

+0

我不知道是否因为这个答案发布而发生了什么变化 - 我在最后一行发现了IE9错误(语法错误),并且在Firefox或Chrome中似乎都没有发生任何错误。我绝不是一个jQuery大师,所以也许我只是在实施错误的......? – Michelle 2012-01-03 21:16:55

+0

想通了;出于某种原因,最后一个分号引发了一个错误。我删除它,它完美的作品!谢谢! – Michelle 2012-01-03 21:52:28

1

我张贴了类似的问题,前几天,这里是为我工作的一段代码。

*** #column_left,#column_center,#column_right:是应该具有相同高度的三列div。我想它可以使用更多或更少的列数。

<script type='text/javascript' 
src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 

<script type='text/javascript'> 
$(document).ready(function() { 

    // get the heights 
    l = $('#column_left').height(); 
    r = $('#column_right').height(); 
    c = $('#column_center').height(); 

    // get maximum heights of all columns 
    h = Math.max(c, Math.max(l, r)); 

    // apply it 
    $('#column_left').height(h); 
    $('#column_right').height(h); 
    $('#column_center').height(h); 
    }); 
</script> 

它是由用户“widyakumara”发布。我希望它也能帮助你。

+0

+1:谢谢你:) – Sarfraz 2010-03-01 08:40:05

1

@ktsixit您应该给所有列添加 类,而不是在此情况下使用唯一标识。然后,您可以一次计算并应用所有项目的最高高度。即使你没有或不能使用一个类,你至少应该使用变量来存储div ID引用。通过上面的代码,您可以解析DOM 6次。您至少可以通过使用变量将其减少到3个解析。

3

强烈推荐可链式插件方法。由于这种尖叫重用.. 可以使equalHeights具体到集合...

$.fn.equalHeights = function() { 
    var max = 0; 
    return this 
    .each(function(){ 
     var height = $(this).height(); 
     max = height > max ? height : max; 
    }) 
    .height(max); 
}; 
// don't combine collections unless you want everything same height.. 
$('.top-menu a').equalHeight(); 
$('footer a').equalHeight(); 

你可以采取更进了一步,并高度你,所以你可以使用高度或宽度,像这样采取财产...

$.fn.equalProp = function (prop) { 
    var max = 0; 
    return this 
    .each(function(){ 
     var oProp = $(this)[prop](); 
     max = oProp > max ? oProp : max; 
    }) 
    [prop](max); 
}; 

$('.top-menu a, .top-menu div').equalProp('height').equalProp('width');