如何用符号替换数字?

问题描述 投票:-1回答:1

如何在不删除“/ g”的情况下修复此代码以替换“<3”和“</ 3”(不含空格):

$('#seem').each(function() {
      $(this).html($(this).html().replace(/\<\3/g,"heart"))
  });

$('#seem').each(function() {
    $(this).html($(this).html().replace(/\<\/\3/g,"broken-heart"))
});
javascript jquery
1个回答
0
投票

在解决文本替换问题之前还有其他一些问题。

首先在id选择器上调用each()是一种代码气味。 Ids需要在DOM中是唯一的,因此永远不应该有多个。如果是这种情况,请使用课程。

其次,你可以为html()text()提供一个函数,它接受当前值作为参数。这减少了您需要创建的jQuery对象的数量,并使逻​​辑更简洁。

接下来,HTML中的<必须编码为&lt;,因此如果你想使用html(),你需要明确地替换它而不是<。或者,您可以使用经过解码的text(),并按原样使用尖括号。

你的正则表达式也不是很正确,因为<3角色都不需要逃脱,只有/

最后你可以链接到replace()的电话;您不需要复制整个jQuery对象或each()循环以替换字符串中的多个值。

尽管如此,试试这个:

$('.seem').text(function(i, t) {
  return t.replace(/<3/g, 'heart').replace(/<\/3/g, 'broken-heart');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="seem">
  Achy breaky &lt;3
</div>
<div class="seem">
  Owner of a &lt;/3
</div>
© www.soinside.com 2019 - 2024. All rights reserved.