Javascript replace()使用html实体

时间:2016-11-07 17:37:06

标签: javascript replace 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>

1 个答案:

答案 0 :(得分:1)

使用.text()代替.html(),正如@vlaz建议的那样。我使用.text()运行了这个示例,它工作正常:

&#13;
&#13;
$(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'));
})
&#13;
<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>
&#13;
&#13;
&#13;