如何用符号代替数字?

时间:2019-04-15 18:05:21

标签: javascript jquery

如何在下面解决此代码,以在不删除“ / g”的情况下替换“ <3”和“

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

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

1 个答案:

答案 0 :(得分:0)

在解决文本替换问题之前,还有两个其他问题。

首先在ID选择器上调用each()是一种代码味道。在DOM中,ID必须是唯一的,因此绝不能有多个。如果是这种情况,请使用一个类。

第二,您可以为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>