javascript - jQuery 替换挂起 chrome

标签 javascript jquery

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

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

最佳答案

因为做替换的脚本在正文中。当您调用 .html(HTMLString)HTMLString包含 <script> , jQuery 执行脚本。因此,在替换主体之后,您将再次调用替换主体的代码,当它运行时,它会再次调用自身,依此类推。

每次进行替换时,您还会加载另一个 jQuery 副本,因为 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js">在体内。

一个解决方案是将所有脚本放在 <head> 中而不是 body 。另一种情况是,如果您只定位包含页面实际内容的容器 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> 

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

关于javascript - jQuery 替换挂起 chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36347139/

相关文章:

javascript - 如何自动上传文件到Netsuite文件柜?

JQuery 全局 isAnimating 检查与 Selenium 一起使用 (2)

jquery - 使用jquery一次性获取真实点击的元素标签名称

javascript - 移动浏览器窗口高度和页面缩放

javascript - Backbone Collection.add 似乎不起作用

JavaScript:onclick 使用 iframe 删除 div

Javascript 与 Android 的 Webview 交互

javascript - 谷歌 API 信息窗口显示在谷歌地图 API 上的 1 个标记下

javascript - 让日期对象在 IE6 中工作(w/YYYY-MM-DD 参数)?

javascript - 如何使用 jQuery 在页面内定位字符串/电子邮件地址