2015-09-06 50 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文件,然后尝试使用代码进行设置。