2017-04-03 63 views
-2

.replace(/ RGBA(0,0,0,0.87)/克,newPrimaryTextColor).replace(/ RGBA(0,0,0,0.87)/克,newPrimaryTextColor)不工作的jquery

是不加工。有其他選擇嗎?

我想通過jquery替換舊的CSS與新的CSS。 CSS文件通過jquery獲取。

+0

你已經把什麼那裏,你的「代碼「可以理解爲使用String方法'replace()'的片段。但是完全不清楚你正在將這個應用到什麼對象(''.'')之前......到目前爲止,這個問題沒有提及jquery。請嘗試解釋(在您的文章中)更詳細的信息,*您想要實現的目標*以及您希望這段代碼如何與您的頁面進行交互。 – cars10m

回答

0

如果你正在尋找一種方式,通過一個新的替換現有的文本顏色定義,那麼也許下面可以幫助你:

$('span').filter(function() { // span,div,td ... or other desired elements 
    var match = 'rgb(0, 0, 0)'; // match text-color: black 
    /* 
     true = keep this element in our wrapped set 
     false = remove this element from our wrapped set 
    */ 
    return ($(this).css('color') == match); 

}).css('color', newPrimaryTextColor); // actually change the color 

這是前一個問題Selecting elements with a certain background color的適應,它不僅會用它的明確顏色定義rgb(0, 0, 0)更改這些元素。更好的方法可能是使用類來代替,但我只能猜測......

0

問題是正則表達式無法轉義(字符串的開始和結尾)。您需要添加獨立的邏輯來逃避這些字符:

function escapeSpecialChars(s) { 
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
    } 

現在指定你的方法如下規定:

function ReplaceColor() { 
    var textContent = "Replace rgba(0,0,0,0.87) with red"; 
    var expression = new RegExp(escapeSpecialChars("rgba(0,0,0,0.87)")); 
    var res = textContent.replace(expression, 'red'); 
    } 

請參考Is there a RegExp.escape function in Javascript?更多細節