2009-02-09 16 views
6

Título prácticamente lo dice todo.
dieron una mesa comojQuery: cómo seleccionar un tr que contiene th's?

<table> 
    <tr> 
    <th>Header 1</td> 
    <th>Header 2</td> 
    </tr> 
    <tr> 
    <td>Datum 1</td> 
    <td> Datum 2</td> 
    </tr> 
    <tr> 
    <td>Datum 1</td> 
    <td> Datum 2</td> 
    </tr> 
</table> 

Cómo seleccionar la fila que contiene los encabezados y th ningún otro?

Respuesta

24

Expresión:

$(function() { 
    $("tr:has(th):not(:has(td))").hide(); 
}); 

o incluso sólo:

$(function() { 
    $("tr:not(:has(td))").hide(); 
}); 

ejemplo completo:

<html> 
<head> 
    <title>Layout</title> 
</head> 
<body> 
<table> 
    <tr> 
    <th>Header 1</td> 
    <th>Header 2</td> 
    </tr> 
    <tr> 
    <td>Datum 1</td> 
    <td> Datum 2</td> 
    </tr> 
    <tr> 
    <td>Datum 1</td> 
    <td> Datum 2</td> 
    </tr> 
    <tr> 
    <th>Header 3</th> 
    <th>Datum 2</td> 
    </tr> 
</table> 
<script src="http://www.google.com/jsapi"></script> 
<script> 
    google.load("jquery", "1.3.1"); 
    google.setOnLoadCallback(function() { 
    $(function() { 
     $("tr:has(th):not(:has(td))").hide(); 
    }); 
    }); 
</script> 
</body> 
</html> 
+3

jQuery es increíble. Eso es todo. –

4
jQuery("tr:has(th)") 

seleccionará cada tr que contiene al menos un th

kthxbye :)

2

Uso del selector de :has:

$('tr:has(th)').addClass('sample') 

probablemente no funcionará si tiene una mesa con mixta y thtd niños.

7

Si es posible, sería ideal para encerrar el encabezado de la tabla dentro de una <thead> elemento

<table> 
    <thead> 
     <tr> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

De esta manera, la selección de su cabecera de la tabla podría ser tan simple como:

$('thead'); 

O seleccionar sólo el <tr>

$('thead tr'); 

su margen de beneficio sería entonces más fácil de leer, y el estilo su mesa se vuelve más fácil, ya que puede apuntar más fácilmente elementos en el encabezado o cuerpo de su mesa.

Cuestiones relacionadas