【发布时间】:2015-12-01 22:43:45
【问题描述】:
如果这个问题不清楚,请提前道歉;我很新。
我正在开发一个 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 颜色。被更改的四个标题都在页面的“通过电子邮件发送最多”部分。即使标题的文本相同,页面主体中的相应标题也不会更改。
我错过了什么?
【问题讨论】:
-
所以,正如我在另一个回复中提到的,更改 CSS 的最后一行工作正常。我正在使用一个颜色变量并传入一个字符串。我可以把它改成“红色”、“#006600”之类的,它仍然只改变了一半的标题。
-
我在 html 中注意到,在主文章中,锚标记中的文本之前可能有一个换行符,我没有选择。我已经搜索过了,但您似乎无法向 $.inArray 添加正则表达式(如果可以的话,我不知道该怎么做)。会这样吗?
-
尝试将新的覆盖设置为 color !important
-
尝试比较链接而不是标题上的文字
-
你正在comapring .text() ,它必须是完全匹配的,或者在比较之前用trim() 或其他字符串格式化程序处理文本。
标签: javascript jquery css google-chrome-extension