2010-05-14 13 views
0

Quelqu'un connaît-il un plugin ou un extrait jQuery qui alignera automatiquement les cellules dans une table en fonction du contenu? De manière spécifique, toutes les cellules de tableau seraient justifiées à droite, à moins qu'il n'y ait un caractère apparent non-numérique dans la cellule, alors cela serait justifié à gauche. Je voudrais utiliser quelque chose comme cette expression régulière pour identifier les caractères liés non nombre dans une cellule:Comment mieux définir l'alignement du texte dans un tableau

/[^0-9% +-()]/ 

Y at-il un vrai moyen simple d'y arriver? Je pense quelque chose comme ceci:

$("td:contains('[^0-9% +-()]')").addClass("left"); 

ferait l'affaire, mais je ne pense pas que « contient » peut prendre une expression régulière.

Répondre

1

Vous pouvez utiliser la fonction de filtre:

$("td").filter(function(){return /^[0-9.%$()]+$/.test($(this).text())}).addClass("left"); 
+0

J'ai dû modifier l'expression rationnelle ici pour correspondre à l'original (non ancré avec le jeu de caractères négationné), comme je veux à gauche justifier tout ce qui n'est pas basé sur le nombre de champs. Cet exemple, bien que plus laconique, utilise une regex statique (test plutôt que match) et suppose que la table entière est déjà justifiée à droite (ce qui est par coïncidence). La fonction «filtre» était un plaisir à apprendre. – ericslaw

1
$(function(){ 
    $("table td").each(function(){ 
     if($(this).text().match(/^[0-9.%$()]+$/)){ 
     $(this).addClass("right"); 
     } else { 
     $(this).addClass("left"); 
     } 
    }); 
    }); 
+0

ajoutant quelques caractères manquants à votre regex fait ce travail (qui manquait plus et l'espace dans le jeu de caractères). – ericslaw