我可以强制jQuery.css(“ backgroundColor”)以十六进制格式返回吗?

| 我有一个像这样的元素:
<p>My text with a <strong class=\"highlighted\">sample highlight</strong>.<p>
像这样的CSS类:
.highlighted {
    background: #f0ff05;
    font-weight: normal;
}
但是当我使用这样的jQuery时:
$(\".highlighted\").css(\"backgroundColor\");
返回returns3ѭ。我可以编写一些将rgb转换为十六进制的函数,但是我想知道是否有某种方法使jQuery返回十六进制格式的值。     
已邀请:
        颜色总是以rgb的形式返回(IE6除外,IE6已经以十六进制形式返回),因此我们不能以其他格式自然返回。 如您所说,您可以编写一个将十六进制转换为rgb的函数。以下是有关如何编写此函数的几个示例的主题:如何获取十六进制颜色值而不是RGB值? 但是,您是否想知道是否有一种方法可以直接以十六进制形式直接返回jQuery:答案是肯定的,自jQuery 1.4.3起使用CSS Hooks便可以实现。 代码应为:
$.cssHooks.backgroundColor = {
    get: function(elem) {
        if (elem.currentStyle)
            var bg = elem.currentStyle[\"backgroundColor\"];
        else if (window.getComputedStyle)
            var bg = document.defaultView.getComputedStyle(elem,
                null).getPropertyValue(\"background-color\");
        if (bg.search(\"rgb\") == -1)
            return bg;
        else {
            bg = bg.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);
            function hex(x) {
                return (\"0\" + parseInt(x).toString(16)).slice(-2);
            }
            return \"#\" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
        }
    }
}
当您致电
$(\".highlighted\").css(\"backgroundColor\")
时,返回的便是
#f0ff05
。这是一个工作示例,您可以看到它正在工作。     
        这是Erick Petrucelli的答案的稍作调整的版本。它似乎可以处理RGBA。
            $.cssHooks.backgroundColor = {
            get: function (elem) {
                if (elem.currentStyle)
                    var bg = elem.currentStyle[\"backgroundColor\"];
                else if (window.getComputedStyle)
                    var bg = document.defaultView.getComputedStyle(elem,
                        null).getPropertyValue(\"background-color\");
                if (bg.search(\'rgba\') > -1) {
                    return \'#00ffffff\';
                } else {
                    if (bg.search(\'rgb\') == -1) {
                        return bg;
                    } else {
                        bg = bg.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);
                        function hex(x) {
                            return (\"0\" + parseInt(x).toString(16)).slice(-2);
                        }
                        return \"#\" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
                    }
                }
            }
        };
    

要回复问题请先登录注册