2010-10-16 3 views
3

J'ai 2 tables: table1 (la "table d'en-tête", qui n'a qu'une seule ligne avec des colonnes de table) - et table2 (la "table de données" ", qui a plusieurs lignes avec toutes les données).Essayer de "synchroniser" 2 tables html (appliquer des largeurs de colonnes)

La table 1 a des largeurs assignées à la plupart des colonnes. J'essaie maintenant d'appliquer les largeurs de colonnes de la table1 à la première ligne de la table2 (la table1 a la même largeur que la table2).

Mon code est:

var tr1 = $("tr",tblHeader).eq(0); // 1st row from header-table 
var tr2 = $("tr",tblData).eq(0); // 1st row from data-table 
var td2 = $("td",tr2);    // all cells from data-table 

$('td',tr1).each(function(i)  
{ 
    var td1 = $(this);    // table1 column header-cell 
    var width = (td1.css('width')); // column-width from header-table 
    td1.css('width',width+"px");  // apply width to header-table-cell 
    td2.eq(i).css('width',wi+"px"); // apply width to data-table-cell 
}); 

Le problème:
lors de la configuration td-padding dans mon css comme: table td{padding:0px;} tout fonctionne bien (les deux tables ont des largeurs de colonnes identiques). mais dès que je change de remplissage à quelque chose comme table td {padding:2px;padding-left:4px;padding-right:4px;} la table de données est foutu. Lors de la vérification des largeurs de colonnes avec firebug, toutes les colonnes ont la même largeur (table1 + table2) mais elles sont toujours différentes. Des idées sur ce qui pourrait être faux?

+0

Vous êtes probablement mieux utiliser '.outerWidth()' pour obtenir la largeur actuelle d'une cellule de table, mais il va encore être difficile parce que du comportement "effondrement de la frontière". – Pointy

Répondre

0

Pourquoi pas seulement une table, comme ceci:

<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Age</th> 
      <th>Country</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Mike</td> 
      <td>26</td> 
      <td>USA</td> 
     </tr> 
     <tr> 
      <td>Peter</td> 
      <td>27</td> 
      <td>Great Britain</td> 
     </tr> 
     <tr> 
      <td>Hans</td> 
      <td>26</td> 
      <td>Germany</td> 
     </tr> 
    </tbody> 
</table> 
+0

La raison (comme moi) que vous pourriez vouloir utiliser deux tables est que vous voulez que l'en-tête en place et le corps défilent. Google Documents utilise deux tables pour atteindre cet effet et les synchroniser d'une manière ou d'une autre. –

Questions connexes