2012-08-31 27 views
0

我有這個網站如何將CSS僅應用於jQuery中的數字?

<tr> 
    <td>Test</td> 
    <td>324</td> 
</tr> 

我的默認CSS是text-align:left

但我想申請text-align:center到包含數字的任何<td>

我有大約50個HTML文件,所以我不能手動添加類。

+0

你嘗試過什麼?提示:對於每個「td」,檢查它的內容並向它添加一個類。 –

+0

在jquery中使用parseInt()函數。您可以使用此函數獲取數字並應用css – supersaiyan

+0

如果單元格包含數字和非數字,如'​​測試123'? – nnnnnn

回答

3

您可以使用filter和一些正則表達式魔術:

$('td').filter(function() { 
    return /^\d/.test($(this).text()); 
}).css('text-align', 'center'); 

上述正則表達式是有點簡單,如果你需要更精確的使用這一個:

/((?!\w+[^\s]))\d+\1/ 

以上將匹配(space)123123(space)但不是123aasd 123所以基本上只有數字和空格允許,如果這就是你要找的。要添加更多有效字符,只需將它們放置爲[^\s,]即可,這將使逗號,也有效。

+0

怎麼樣在文本中的空白,如'​​324'? –

+0

'​​123123herp'成功基於那個正則表達式,這是故意的嗎? –

+0

剛剛用更好的正則表達式編輯我的問題 – elclanrs

0
​$(function(){ 
    $("td").filter(function(){ 
     return (/^\s*\d*\.?\d+\s*$/).test(this.innerHTML); 
    }).css("text-align","center");   
});​​ 

編輯:這裏有一個的jsfiddle:http://jsfiddle.net/Avf7P/

0

通過jQuery的添加類,你可以看看這個fiddle的另一個例子。類'centerMe'只包含您需要的文本對齊值。

$('td').each(function(){ 
      if($.isNumeric($(this).html())) 
      { 
       $(this).addClass('centerMe'); 
      } 
    }); 

請注意,這使用isNumeric這可能不是你的意圖。如果是這種情況,那麼你需要修改這個以使用其他解決方案中提到的正則表達式方法之一。

+0

這應該是一個評論,而不是一個答案。 – ahren

+0

@ahren - 因爲我沒有粘貼在我的小提琴的文字? – Carth

1

老派的解決方案(效果很好):

function Trim(str){ 
    return str.replace(/^\s+|\s+$/g,""); 
} 

function applyCssCustomToSomeTds(){ 
    for(i=0;i<document.getElementsByTagName('td').length;i++){ 
     var elementTd = document.getElementsByTagName('td')[i]; 
     if(!isNaN(Trim(elementTd.innerHTML))){ 
      elementTd.style.textAlign = "center"; 
     } 
    } 
} 
相關問題