2009-02-09 3 views
6

Titel sagt so ziemlich alles.
eine Tabelle wiejQuery - wie wähle ich einen tr, der th's enthält?

<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> 

Wie die Zeile auszuwählen gegeben, die der th Header und keine andere enthält?

Antwort

24

Expression:

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

oder auch nur:

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

Voll Beispiel:

<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 ist erstaunlich. Das ist alles. –

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

wird jeder tr auswählen, die mindestens eineth

kthxbye :)

2

Verwenden Sie den :has Selektor enthält:

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

Wahrscheinlich mit gemischten th funktioniert nicht, wenn Sie eine Tabelle haben und td Kinder obwohl.

7

Wenn möglich, wäre es ideal, Ihren Tabellenkopf in einem < zu umschließen Thead > Element

Auf diese Weise würde Ihren Tabellenkopf der Auswahl so einfach wie:

$('thead'); 

oder nur die <tr>

$('thead tr'); 

Ihr Markup dann besser lesbar sein würde, die Auswahl und Styling Ihr Tisch wird einfacher, da Sie Elemente in der Kopfzeile oder im Körper Ihres Tisches leichter anvisieren können.