2010-10-17 19 views
27

¿Es posible tener un tbody interior incluido en un tbody exterior como esto:¿Puede un tbody estar dentro de otro?

aquí es un css muestra:

<style type="text/css"> 
    .class1 {background-color:#ff0000;} 
    .class2 {background-color:#00ff00;} 
    </style> 

Aquí está el código HTML muestra

<table> 
    <tbody id="outer" class="class1"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    <tbody id="inner" class="class2"> 
     <tr> 
     <td>...</td> 
     <td>...</td> 
     </tr> 
    </tbody> <!-- inner --> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    </tbody> <!-- outer --> 
</table> 

Mi propósito es aplica class1 CSS al tbody externo y class2 al tbody interno. Pero el último TR se considera fuera del cuerpo externo ya que quiero que esté dentro del cuerpo externo.

¿Cómo puedo hacer eso?

Respuesta

35

Si bien esto puede funcionar en la práctica, it is not legal HTML.

Sin embargo, se le permite tener múltiples elementos TBODY en un solo elemento TABLE, por lo que podría hacer esto:

<table> 
    <tbody class="show"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    </tbody> 
    <tbody class="hide"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    </tbody> 
    <tbody class="show"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    </tbody> 
</table> 

Alternativamente, usted puede ser capaz de anidar tablas, aunque yo no recomendaría ese.

14

La forma sería crear otra mesa y utilizar tbody después:

<table> 
    <tbody id="outer" class="show"> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
     <table> 
     <tbody id="inner" class="hide"> 
     <tr> 
      <td>...</td> 
      <td>...</td> 
     </tr> 
     </tbody> <!-- inner --> 
     </table> 
     </td> 
    </tr> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
    </tbody> <!-- outer --> 
</table> 
+0

Muchas gracias, pero prefiero la respuesta de Michael Madsen. –

+0

esta fue la respuesta correcta a la pregunta original, porque permite elementos de tbody dentro de los elementos de tbody, que fue lo que se solicitó. Esto permite seleccionar por padre tbody id y child tbody class si es necesario. – amaster

+4

Esta respuesta puede ser formalmente correcta, pero no tiene sentido. Los cuerpos pertenecerán a diferentes tablas, por lo que sus columnas no se alinearán entre sí. –

1

No es probable. Si todo lo que quiere es 'distinguir' un conjunto de filas, asignaría la clase inner a cada fila en cuestión (en lugar de tbody). A continuación, puede manipular fácilmente esas filas con cualquier marco de js, como $('tr.inner').show();.

8

No, esto es not possible. De acuerdo con la especificación, el elemento TBODY puede contener solo TR elementos.

<!ELEMENT TBODY O O (TR)+   -- table body --> 

¿Qué desea lograr?

1

Me temo que no puedes hacer tal cosa.

Según W3C un tbody no puede dentro de otro.

Cuestiones relacionadas