Цвета всегда возвращаются как rgb (кроме IE6, который уже возвращается в hex ), тогда мы не можем вернуться в другом формате изначально.
Как вы сказали,Вы можете написать функцию для преобразования шестнадцатеричного значения в rgb .Вот тема с несколькими примерами того, как написать эту функцию: Как получить шестнадцатеричное значение цвета, а не значение RGB? .
Но вам интересно, есть ли способ напрямую вернутьjQuery уже в шестнадцатеричном виде: ответ - да , это возможно при использовании CSS-хуков , начиная с jQuery 1.4.3.
Код должен быть:
$.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
.Вот рабочий образец , чтобы вы видели, как он работает.