2012-04-24 27 views
0

我有两个div,一个在另一个之上,两个都有一个表格,里面有相同数量的列。我希望这两列的宽度都相同,并且对齐。如果div上的列扩展,我想在另一个div中的列并行扩展为与之相同。放置在独立div对齐内的并行表格列

注意:列没有宽度。 Link to the HTML code below:


HTML:

<div id="A"> 
    <table> 
     <tbody> 
      <tr> 
       <th></th> 
       <th>Blah! Blah</th> 
       <th>adsdsdadasdasdasdasd</th> 
      </tr> 
     </tbody> 
    </table> 
</div> 
<br/> 
<div id="B"> 
    <table> 
     <tr> 
      <th>left head</th> 
      <td class="col1"></td> 
      <td class="col2">Hello World!</td> 
     </tr> 
     <tr> 
      <th>left head</th> 
      <td class="col1">Hello World!</td> 
      <td class="col2">dsfsdfgdsgdsgdsfgdsgdsgfdfgdf</td> 
     </tr>  
    </table> 
</div> 

JQuery的:

$(document).ready(function() { 
    $('#updatetopdiv').click(function(){   
      //Properly align parallel div's top to bottom 
      var tbl1 = $("#A table tr td"); 
      var tbl2 = $("#B table tr td"); 
      tbl1.each(function(i) { 
       if (tbl2.eq(i).width() < $(this).width()) { 
        tbl2.eq(i).width($(this).width()); 
       } else { 
        $(this).width(tbl2.eq(i).width()); 
       } 
      }); 
    }); 
});​ 

+0

我不太明白你想要在单元格内有相同数量的空间,所以他们都统一无关紧要什么内容? – 2012-04-24 16:26:44

回答

0
​$(document).ready(function(){ 
    var tbl1 = $("#A table tr td"); 
    var tbl2 = $("#B table tr td"); 
    tbl1.each(function(i){ 
     if (tbl2.eq(i).width() < $(this).width()){    
      tbl2.eq(i).width($(this).width()); 
     } else { 
      $(this).width(tbl2.eq(i).width()); 
     }  
    }); 
});​ 

这可以工作,虽然它不会运行直到加载。

还摆放位置:http://jsfiddle.net/gwUFb/3/

编辑:

我知道你说你已经懂了工作,但这里是我的原代码,编辑为您的使用情况:

$(document).ready(function(){ 
    var tbl1 = $("#A table tr th"); 
    var tbl2 = $("#B table tr td,#B table tr th"); 
    tbl1.each(function(i){ 
     if (tbl2.eq(i).width() < $(this).width()){    
      tbl2.eq(i).width($(this).width()); 
     } else { 
      $(this).width(tbl2.eq(i).width()); 
     }  
    }); 
});​ 
+0

感谢您的发布。编辑我的示例以包含您发送的内容。请参阅html以获得我想要完成的真实想法。 – Nation 2012-04-24 20:36:30

+0

我会编辑这个..我假设你想要较低的

来反映上面表格“标题”的宽度 – 2012-04-24 20:39:48

+0

我可以使用它来完成它: $(“#A table tr”)。儿童(); (“#B table tr”)。children(); 但这无法解决我真正的问题。请参阅我的真实问题的链接: http://jsfiddle.net/nathan406/Dgjct/ – Nation 2012-04-24 21:00:03

0

HTML将成为:

<div id="A"> 
    <table class="fixed-table"> 
     <tr> 
      <td class="column-a">Hello World!</td> 
      <td class="column-b"></td> 
     </tr> 
    </table> 
</div> 
<br/> 
<div id="B"> 
    <table class="fixed-table"> 
     <tr> 
      <td class="column-a"></td> 
      <td class="column-b">Hello World!</td> 
     </tr> 
    </table> 
</div> 

css将是

.fixed-table { 
    table-layout: fixed; 
} 

.column-a { 
    width: 50%; 
} 

.column-b { 
    width: 50%; 
} 

这是一个固定的解决方案,而不是dynaimic,如果任何div滚动出现,对齐中断。为此,你必须使用JavaScript。