我有一个这样的元素:
<p>My text with a <strong class="highlighted">sample highlight</strong>.<p>
和CSS类这样:
.highlighted { background: #f0ff05; font-weight: normal; }
但是当我使用jQuery像这样:
$(".highlighted").css("backgroundColor");
它返回rgb(240,255,5)。我可以写一些函数从rgb转换为十六进制,但我想知道是否有一些方法jQuery返回的值已经十六进制格式。
解决方法
颜色总是返回为rgb(除了已经以十六进制返回的IE6),那么我们不能以其他格式返回。
像你说的,你可以写一个函数来将hex转换为rgb。这里是一个主题,有几个例子如何写这个函数:Get hex value rather than RGB value using jQuery。
但你想知道是否有一种方法直接返回jQuery已经在十六进制:答案是肯定的,这是可能使用CSS Hooks从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]); } } }
当你调用$(“。highlight”)。css(“backgroundColor”),返回将是#f0ff05。这里是一个working sample你看到它的工作。