3

为什么这行不通?

浏览器 = Safari

<p style="color:blue;">foo</p>

if ($("p").css(("color") === "blue")) {
        alert(1);
}

谢谢

4

4 回答 4

8

这都是关于语法和括号的:

if ($("p").css("color") === "blue") {
        alert(1);
}
于 2013-02-20T09:28:24.083 回答
4

最初,支架放置错误。您应该获得CSS 属性“color”的.css("color")值并测试与您的值是否相等,如下所示:

if ($('p').css('color') === 'blue') {
    alert('color is blue');
}

但是,某些浏览器会返回rgb与您的“蓝色”不匹配的值,例如 Chrome 和 Firefox 返回rgb(0, 0, 255)for $('p').css('color'),因此您可能还想针对 rgb(甚至是十六进制 - '#0000ff')值进行测试。所有值在逻辑上但在文本上并不相同。

var color = $('p').css('color')
if (color === 'blue' || color === 'rgb(0, 0, 255)' || color === '#0000ff') {
    alert('color is blue');
}

更进一步,if 条件可能应该考虑颜色的大小写。'BLUE' 或 '#0000FF' 也是有效的。

于 2013-02-20T09:30:01.060 回答
0

我认为应该是:if ($("p").css("color") === "blue"){ alert(1); }

于 2013-02-20T09:29:13.640 回答
0

至少在 Firefox 和 Chrome 中

$("p").css("color") 

返回 rgb(0,0,255) 所以你的条件无论如何都不会是真的。所以也许这样的解决方法:

if ($("p").attr("style").contains('color:blue;')) {
    alert(1);
}
于 2013-02-20T09:37:20.023 回答