2010-10-03 15 views
1

J'ai une ou plusieurs tables contenant différents contenus générés dynamiquement. Comment est-ce que je peux faire que tout avec seulement des nombres à l'intérieur ayez l'alignement de texte vers la droite?Comment aligner <td> avec les chiffres à droite, jQuery

Eh bien, je sais comment ajouter un élément à css, la question est de savoir comment obtenir que tds avec des chiffres

Thank you!

+0

Vous voulez que les cellules de tableau contenant des nombres * seulement * soient 'text-align: right'? –

+0

exatcly, David, et d'autres sont inchangés –

+0

et par «chiffres», je veux aussi dire contenu comme ça: '32 784,63 ' –

Répondre

3

Vous pouvez utiliser l'option filter:

$('td').filter(function() { 
    return this.innerHTML.match(/^[0-9\s\.,]+$/); 
}).css('text-align','right');

Cela correspondra à "123", "12 3", "12.3" et "12,3" mais pas "abc", "abc123", etc.

+0

Cela fonctionne très bien, merci beaucoup! –

+0

et quels devraient être les changements s'il y a le symbole ' ' à la place de la barre d'espace? –

+0

Je ne suis pas sûr si vous pouvez faire correspondre '\ s' ou'   'de cette façon (sans aussi correspondre par exemple" 12nb "), mais cela fonctionnera:' this.innerHTML.replace (' ', '') .match (/^[0-9 \ s \.,] + $ /); ' – Alec

0

Votre question n'est pas réelle claire, mais vous pouvez aligner à droite dans une cellule comme ceci:

<td align="right">123</td> 
+0

Il a besoin d'un sélecteur jQuery pour cibler les cellules de table contenant uniquement des nombres. – Alec

+0

La façon dont je le lis - et je fais un énorme saut intuitif - est que les données * dans * les cellules sont générées dynamiquement. Il a donc besoin de JS/jQuery pour trouver ces cellules avec seulement des nombres, puis les 'text-align: right'. Mais je devine surtout, malheureusement. –

+0

le problème est, que je ne sais pas si la cellule contient seulement des nombres, c'est pourquoi j'ai besoin de la solution js/jQuery –

0

Je suggérerais quelques jquery, je me suis moqué sur jsbin.

$(document).ready(function(){ 
    $("td").each(function(index, item){  

     if(isNaN($(item).text()) == false){ 
      $(item).addClass("match"); 
     } 
    }); 
}); 
+1

Ensuite, vous voudrez peut-être passer à [l'aide à la modification] (http: // stackoverflow.com/editing-help) pour avoir un aperçu rapide-voir =) –

2

Si vous voulez une solution jQuery-ish, d'une façon est d'utiliser un sélecteur personnalisé:

$.expr[':'].isNumeric = function(obj){ 
    return !isNAN($(obj).text()); 
}; 

Et puis:

$('td:isNumeric').addClass('numeric'); 

qui assume le style:

td.numeric { text-align: right; } 

... ou si vous préférez:

$('td:isNumeric').css('text-align','right'); 
0

Une meilleure variation de réponse merveilleuse Alec, est

$('td').filter(function() { 
    return this.innerText.match(/^[-?0-9\s\.,]+$/); 
}).css('text-align', 'right'); 

Cela attire aussi les nombres négatifs et sera beaucoup le contenu textuel de la cellule plutôt que le contenu html qui échoue dans des cas comme

<td> 
<div>1.49</div> 
</td> 
Questions connexes