在body html中搜索某些文本的最佳方法是什么

Exc*_*ion 5 javascript jquery replace

截至目前,我正在使用javascript搜索方法替换正文HTML中的一些文本,如下所示.

假设我的HTML是

 <body>
      <div> I am in body...</div>
 </body>
Run Code Online (Sandbox Code Playgroud)

然后我使用以下方法

 var body = $(body);
 var text = body.html();
 text = text.replace('I am in body...','Yes');
 body.html(text);
Run Code Online (Sandbox Code Playgroud)

但我可以在IE等浏览器中看到慢页面搜索..
请建议我改进这一点,也请知道是否有任何插件可以搜索并匹配字符串,即使它包含任何html标签..如下

 <body>
       <div><span>I </span> am in body...</div>
 </body>
Run Code Online (Sandbox Code Playgroud)

使用当前的方法,我无法匹配这个..
如果我使用

  $('*:contains("some search text string")'); 
Run Code Online (Sandbox Code Playgroud)

这将匹配DIV和BODY ..但是在这里我想搜索html文本而不是父元素...谢谢

Dr.*_*lle 6

你应该看看:

范围:(修改文本而不覆盖整个主体)

IE:http://msdn.microsoft.com/en-us/library/ms535872%28v=vs.85%29.aspx
其他:https://developer.mozilla.org/en/DOM/range


find()/ findText()(创建范围)

IE:http://msdn.microsoft.com/en-us/library/ms536422%28v=vs.85%29.aspx
其他:https://developer.mozilla.org/en/DOM/window.find

(Opera不支持find或findText)


关于这个问题的一个小修改:

<html>
<head>

  <script>
  function fx(a,b)
  {
    if(window.find)
    {
      while(window.find(a))
      {

        var rng=window.getSelection().getRangeAt(0);
        rng.deleteContents();

        rng.insertNode(document.createTextNode(b));

      }
    }
    else if(document.body.createTextRange)
    {
      var rng=document.body.createTextRange();
      while(rng.findText(a))
      {
        rng.pasteHTML(b);
      }
    }
  }
  </script>
</head>
<body onload="fx('I am in body...','Yes')">
<div>Oh <span>I </span>am in body...<i>, wonderful</i></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)