Javascript jQuery替换挂起chrome

Javascript jQuery替换挂起chrome,javascript,jquery,Javascript,Jquery,为什么这个脚本会冻结Chrome?还有,有没有更好的方法来完成我想做的事情(用另一个词替换一个词的所有实例) $(文档).ready(函数(){ var replaced=$(“body”).html().replace('Foo','Bar'); $(“正文”).html(已替换); }); 福 因为执行替换的脚本在主体中。当调用.html(HTMLString)并且HTMLString包含时,jQuery执行脚本。因此,在替换主体之后,您将再次调用替换主体的代码,当它运行时,它将再次调用自

为什么这个脚本会冻结Chrome?还有,有没有更好的方法来完成我想做的事情(用另一个词替换一个词的所有实例)


$(文档).ready(函数(){
var replaced=$(“body”).html().replace('Foo','Bar');
$(“正文”).html(已替换);
});
福


因为执行替换的脚本在主体中。当调用
.html(HTMLString)
并且
HTMLString
包含
时,jQuery执行脚本。因此,在替换主体之后,您将再次调用替换主体的代码,当它运行时,它将再次调用自身,以此类推

每次进行替换时,您还将加载另一个jQuery副本,因为
在主体中

一种解决方案是将所有脚本放在
而不是正文中。另一种情况是,如果只针对包含页面真实内容的容器DIV

<html>
  <body>      
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
      <script>
    $(document).ready(function(){   
        var replaced = $("#content").html().replace(/Foo/g,'Bar');
        $("#content").html(replaced);
    });
      </script>
      <div id="content">
        <p>Foo</p>
      </div>
    </body>
</html> 

$(文档).ready(函数(){
var replaced=$(“#content”).html().replace(/Foo/g,'Bar');
$(“#内容”).html(已替换);
});
福


此外,当您将字符串作为
.replace()
的第一个参数时,它只替换第一个匹配项。如果要替换所有匹配项,则需要使用带有
g
修饰符的正则表达式。

!只是想补充一点,他可能想使用
$(“body”).html().replace(/Foo/g,'Bar')
替换所有实例,而不仅仅是第一个实例…一旦他解决了您的问题。您还可以使用
.html
的回调<代码>$(“#content”).html(函数(i,oldHtml){返回oldHtml.replace(/Foo/g,'Bar');})@Tushar我喜欢用它来代替
.each()
循环。当只选择一个元素时,我认为简单的代码更清晰。
<html>
  <body>      
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
      <script>
    $(document).ready(function(){   
        var replaced = $("#content").html().replace(/Foo/g,'Bar');
        $("#content").html(replaced);
    });
      </script>
      <div id="content">
        <p>Foo</p>
      </div>
    </body>
</html>