2010-12-07 10 views
2

J'ai une table comme ça:Comment remplacer toutes les balises tr avec des tags th

<thead>  
    <tr class="row-2"><tr> 
    <tr class="row-3">..<tr> 
    <tr class="row-4">..<tr> 
    <tr class="row-5">..<tr> 
    <tr class="row-6">..<tr> 
    <tr class="row-7"><tr> 
    <tr class="row-8">..<tr> 
    <tr class="row-9">..<tr> 
    <tr class="row-10">..<tr> 
    <tr class="row-11">..<tr> 
</thead> 

Comment puis-je remplacer tous les tags tr avec le tag e dans thead tag, en utilisant jQuery?

+0

Pour tous ceux qui rencontrent encore cette question, c'est une mauvaise compréhension de la balise 'th'. '' est une étiquette pour un _cell_, * pas * un _row_ comme ''. '' contient toujours '' lignes; ce sont les lignes '' balises qui doivent être modifiés pour '' tags, à savoir ''. – JonBrave

Répondre

6

Obtenez les tables html puis replace toutes les occurrences ou tr (voir RegExp pour plus d'informations) avec th. Vous pouvez probablement définir le <thead> pour avoir un ID et accéder à celui-ci.

$('#tableId').html($('#tableId').html().replace(/tr/gi, 'th')); 

Ceci changera tous les tr dans la table entière en th.

EDIT Pour de meilleures performances grâce à jAndy.

$('#mytable').find('tr').each(function() { 
    var $this = $(this); 
    $this.replaceWith('<th class="' + this.className + '">' + $this.text() + '</th>'); 
}); 

Est-ce que .find() est plus rapide que $ ('# mytable> tr')?

+0

Merci pour votre bonne réponse. Je vérifie cette réponse comme juste dans deux minutes. – mavera

+0

http://jsperf.com/replace-vs-jquery – jAndy

+0

voir mise à jour ..... –