2015-09-06 23 views
0

如果這個問題不清楚,請提前道歉;我很新。jQuery不改變CSS,即使在數組中找到元素?

我正在使用Chrome擴展程序來更改www.nytimes.com上瀏覽次數最多的標題的顏色。我的問題是,我無法讓jQuery可靠地覆蓋頁面上的CSS。

我正在使用一個函數來搜索頁面上的所有錨點,將這些錨點的文本與標題數組進行比較,並在文本匹配其中一個標題時修改CSS。下面是我有:

$("a").each(function() { 
    $this = $(this); 
    if ($.inArray($this.text(), titles) !== -1) { 
     console.log("found title"); 
     $this.css('color', color); 
    } 
    }); 

的執行console.log語句是測試,這的確顯示我,我此刻的我的網頁上找到8場比賽。但是,只有四場比賽獲得CSS顏色。四個改變的標題都在頁面的「通過電子郵件發送」部分。即使標題文字相同,頁面主體中的相應標題也不會更改。

我錯過了什麼?

+0

因此,正如我在另一個迴應中提到的,最後一行更改CSS工作正常。我正在使用一個變量作爲顏色並傳遞一個字符串。我可以將其更改爲「紅色」,「#006600」或其他任何內容,但它只會改變一半的標題。 – Erik816

+0

我注意到在主要文章中的html,可能有一個換行標籤之前的文本,我沒有拿起。我已經搜索,但它不會出現,你可以添加一個正則表達式到$ .inArray(如果可以的話,我不知道該怎麼做)。這可能嗎? – Erik816

+0

嘗試使新的替代顏色!重要 – Bhargav

回答

1

嘗試工作DEMO這裏,

$this.css('color', 'red');

,並使用.trim()進行精確的字符串比較,

$this.text().trim() 
+0

感謝您的幫助,現在我看到它非常簡單的解決方案! – Erik816

+0

歡迎Erik,隨時樂意幫助:) – sajanyamaha

0

嘗試更換此行

$this.css('color', color); 

$this.css({color:'#006600'}); 
+0

感謝您的回覆。該行同樣適用(從我的研究中,您可以使用任一格式更改CSS)。仍然只改變了一半的標題。如果不清楚,我將顏色定義爲一個變量,並且傳入一個有效的字符串。 – Erik816

0

檢查您的.css文件。如果該文件包含有類似的文字如下:

someSelector { 
... 
    ... 
color: "somecolor !important "; 
... 

}

然後jQuery的無法通過代碼覆蓋它。請先修改您的css文件,然後嘗試使用代碼進行設置。