Javascript replace() 使用 html 个实体

Javascript replace() using html entities

出于某种原因,Javascript replace('search', 'replace') 函数适用于一些 HTML 实体字符串作为搜索词,但对其他一些实体字符串却不是我期望的那样。这些不一致是非常有问题的,我什至无法通过它的工作方式解决这个问题。我如何保证这些实体搜索词总能找到完整的纯文本词?我需要替换以 ‐ 在此示例中的方式工作:

$(document).ready(function(){
  $('#good').html($('#good').html().replace($('#good').data('text'), 'FOUND'));
  $('#okay').html($('#okay').html().replace($('#okay').data('text'), 'FOUND'));
  $('#bad').html($('#bad').html().replace($('#bad').data('text'), 'FOUND'));
  $('#wrong').html($('#wrong').html().replace($('#wrong').data('text'), 'FOUND'));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="good" data-text="find">
1: find
</div>
<div id="okay" data-text="&dash;">
2: &dash;
</div>
<div id="bad" data-text="&gt;">
3: &gt;
</div>
<div id="wrong" data-text="&amp;">
4: &amp;
</div>

按照@vlaz 的建议使用.text() 而不是.html()。我 运行 使用 .text() 的示例,它工作正常:

$(document).ready(function(){
  $('#good').text($('#good').text().replace($('#good').data('text'), 'FOUND'));
  $('#okay').text($('#okay').text().replace($('#okay').data('text'), 'FOUND'));
  $('#bad').text($('#bad').text().replace($('#bad').data('text'), 'FOUND'));
  $('#wrong').text($('#wrong').text().replace($('#wrong').data('text'), 'FOUND'));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="good" data-text="find">
1: find
</div>
<div id="okay" data-text="&dash;">
2: &dash;
</div>
<div id="bad" data-text="&gt;">
3: &gt;
</div>
<div id="wrong" data-text="&amp;">
4: &amp;
</div>