如何解析文本中的颜色,如果我键入#40464f,我想抓住颜色并将其应用于CSS。
我知道如何通过添加标记来实现这一点,
<span data-color=""> #40464f </span>
例如。
但我想知道是否可以自动执行此操作而无需手动添加标记?
答案 0 :(得分:2)
不知道问的是什么,我只是提供一种在HTML元素中匹配(HEX)颜色的方法。
给定HTML:
<p id="subject">
Here is a color: #fff. Red is #ff0000 while #9ab57d is another color.
</p>
使用JS:
$(function() {
var m = $('#subject').text().match(/#(?:[0-9a-f]{3}){1,2}/gi);
// ['#fff', '#ff0000', '#9ab57d']
$.each(m, function(i, v) {
// `v` is each color...
});
});
(Demo)
<强>更新强>
Demo where the colors are actually used:
HTML:
<p id="subject">
Here is a color: #fff. Red is #ff0000 while #9ab57d is another color.
</p>
<ol id="result"></ol>
JS:
$(function() {
var m = $('#subject').text().match(/#(?:[0-9a-f]{3}){1,2}/gi),
$result = $('#result');
$.each(m, function(i, v) {
$('<li />').text(v).css('background-color', v).appendTo($result);
});
});
更新#2
根据评论,替换内联(demo):
HTML:
<p id="subject">
Nous obtenons les 2 couleurs suivantes : #40464f & #0f131a
</p>
JS:
$(function() {
var $subject = $('#subject'),
str = $subject.html();
str = str.replace(/#(?:[0-9a-f]{3}){1,2}/gim, "<span style=\"background-color: $&;\">$&</span>");
$subject.html(str);
});
答案 1 :(得分:1)
由于我认为这是 span 中的文字,您希望检查我认为正则表达式匹配是你必须去的方式。
这是一个允许使用regexp选择元素的过滤器。
http://james.padolsey.com/javascript/regex-selector-for-jquery/
答案 2 :(得分:0)
Working Example on JSFiddle.net
<input /> <button>Change</button> <div></div>
<script>
$(function(){
$('button').click(function(){
$('div').css('background-color', $('input').val());
});
});
</script>
或者如果它是您想要更改的文字颜色,请使用.css('color', $('input').val())
另外,请注意您的选择器应该比我的好!