在一个项目中,我遇到了一个bug并发现了这个意外行为:
如果我对一个字符串调用.replace()方法并将结果使用.text()方法赋给div,那么替换功能会如我所期望的工作。
然而,如果我对一个字符串调用.replace()方法并将结果使用.html()方法赋给div,那么目标文本不会在字符串中被替换。
下面是一个例子:
我发现使用
为什么会出现这种情况呢?
如果我对一个字符串调用.replace()方法并将结果使用.text()方法赋给div,那么替换功能会如我所期望的工作。
然而,如果我对一个字符串调用.replace()方法并将结果使用.html()方法赋给div,那么目标文本不会在字符串中被替换。
下面是一个例子:
$('#result1').text('¤cyId'.replace('¤cyId','¤cyId')); // works
$('#result2').html('¤cyId'.replace('¤cyId','¤cyId')); // doesnt work
var result = '¤cyId'.replace('¤cyId','¤cyId')
$('#result3').text(result); // works
$('#result4').html(result); // doesnt work
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result1"></div><br>
<div id="result2"></div><br>
<div id="result3"></div><br>
<div id="result4"></div>
.text()
而不是 .html()
可以解决这个问题,但是...为什么会出现这种情况呢?