我们有......简单的版本...... 在实时版本中,“this”是两个jQuery中的每个循环,因为我们正在搜索多个unicode字符的多个分区......
<p id="searchDiv1">Root Juice™</p>
我们希望将“™”的颜色更改为红色.. 所以我们有这个...
var char = '™';
var thisDiv = '#searchDiv1';
var replaceWithThis = '<span color="red">'+char+'</span>';
var newText = $(thisDiv).html().replace( /[char]/g, replaceWithThis);
$( thisDiv ).html(newText);
不幸的是......结果看起来像这样..
Root Jui™e™
显然......我们需要更好的正则表达式...或者其他...... 有人有任何线索吗? 感谢...
答案 0 :(得分:1)
代码有几个问题。这是一个最低限度修改的版本:
var char = '\u2122';
var thisDiv = '#searchDiv1';
var replaceWithThis = '<font color="red">'+char+'</font>';
var newText = $(thisDiv).html().replace(new RegExp(char, 'g'), replaceWithThis);
$( thisDiv ).html(newText);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="searchDiv1">Root Juice™</p>
首先,您不能在JavaScript中使用™
,除非您将JavaScript解析为HTML。请改用JavaScript字符转义\u2122
。这里2122是十进制8482的十六进制形式。
其次,当你在正则表达式中使用[char]
时,它是按字面意思理解的:它匹配任何字符c,h,a,r。这里没有变量替换。使用RegExp
构造函数从变量值构建正则表达式。
第三,span
元素没有color
属性。请改用font
元素。 (虽然许多人对它皱眉并诅咒它,但它的工作正常。)或者,使用例如具有span
属性的class
元素,并使用该类定义CSS规则。或者使用内联CSS <span style="color: red">
。