JQuery: Si un en-tête de tableau <th> dispose d'une classe, d'ajouter une classe à la cellule de la table <td>
Disons que j'ai le code html suivant:
<table>
<thead>
<tr>
<th class="alignRight">Header1</th>
<th>Header2</th>
<th class="alignLeft">Header3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row1</td> //Add class="alignRight"
<td>Row1</td>
<td>Row1</td> //Add class="alignLeft"
</tr>
<tr>
<td>Row2</td> //Add class="alignRight"
<td>Row2</td>
<td>Row2</td> //Add class="alignLeft"
</tr>
<tr>
<td>Row3</td> //Add class="alignRight"
<td>Row3</td>
<td>Row3</td> //Add class="alignLeft"
</tr>
</tbody>
</table>
Si un TR dans le THEAD contient la classe "alignRight" ou "alignLeft" je voudrais appliquer la même classe correspondant de la TD dans le TBODY.
J'utilise JQuery et ont essayé de la suite, mais aucun d'entre eux semblent fonctionner correctement:
$('tr').has('th.alignRight').addClass('th.alignRight');
$('tr').has('th.alignLeft').addClass('th.alignLeft');
$('thead.tr').has('th.alignRight').addClass('tbody.th.alignRight');
$('thead.tr').has('th.alignLeft').addClass('tbody.th.alignLeft');
if ($('thead.tr').has('th.alignRight')){
$('tbody.tr').addClass('th.alignRight');
}
if ($('thead.tr').has('th.alignRight')){
$('tbody.tr.td').addClass('alignRight');
}
Toutes les idées sur ce qui pourrait être mauvais?
Mise à JOUR:
Je voudrais ajouter que j'ai déjà parcourir le tableau à l'aide d'un .chacun() en boucle. J'ai seulement besoin d'ajouter la condition que, si la table d'en-tête a cette catégorie, ajouter la même classe de la cellule du tableau. L'ajout d'un supplément de l'itération au cours de l'itération actuelle semble que cela conduirait à des problèmes de performances. Est-ce vrai?
BOUCLE:
function(res) {
var tbl_body = "";
$.each(res, function () {
var tbl_row = "";
$.each(this, function (k, v) {
//Irrelevant code
tbl_row += "<td>" + v + "</td>";
})
tbl_body += "<tr>" + tbl_row + "</tr>";
})
$("#print").html(tbl_body);
},
//Other irrelevant code
td
s.Qu'est-ce que
res
?res = résultat. Il n'est pas utilisé dans ce cas.
Je ne comprends pas votre boucle, et donc comment le modifier pour mettre les classes. Viens de faire une autre boucle, plus tard, comme nous l'avons écrit : vous n'aurez pas de problèmes de performances, sauf si votre table a des milliers de lignes.
OriginalL'auteur Keven | 2013-11-13
Vous devez vous connecter pour publier un commentaire.
Je pense que vous ne voyez pas comment sélecteurs jquery travail.
$('thead.tr')
signifie : trouvez-moi tous lesthead
qui a letr
classe. Visiblement pas ce que vous voulez faire.Voici un code qui devrait fonctionner :
De vérifier si la banque td a une classe n'est pas nécessaire, puisque addClass ne fait rien, si vous lui donnez un paramètre vide.
Postez votre boucle (voir mon commentaire)
Voir la boucle ci-dessus.
J'ai finalement finit par l'obtenir pour fonctionner avec votre code. Ainsi, vous obtenez le vérifier. Arun la réponse aurait probablement obtenu le vérifier, mais il utilise
:nth-child
qui a des problèmes avec IE8.Comme je l'ai dit, ce n'est pas une grosse affaire pour analyser deux fois tif vous n'avez pas un très grand tableau. Et vous pouvez réduire ce code à une seule ligne.
OriginalL'auteur OlivierH
Essayer
Démo: Violon
ne sais pas les gars.... folle journée je pense
semble être un de ces jours, +1
J'ai déjà un .chaque fonction qui parcourt les lignes de la table. J'ai besoin d'une fonction qui vérifie juste la table actuelle de la tête de classe, et si elle le fait, ajoutez cette classe à la cellule du tableau. Est de nidification .chacune des fonctions() un problème?
Voir ma mise à jour...
OriginalL'auteur Arun P Johny
Votre code ne fait pas ce que vous pensez que cela fonctionne:
etc, etc.
Votre code ne rien avec le
<td>
'sCe pourrait être fait:
OriginalL'auteur Neal
Aucun de vos addClass chaînes sont valides. Whan ajout d'une classe que vous ne fournissez le nom de la classe.... pas de
dot
en elleMaintenant ajouter à la TD pouvez simplement utiliser le sélecteur de
OriginalL'auteur charlietfl
Voici une solution: (fiddle ici)
OriginalL'auteur Miquel Las Heras