2011-11-26 72 views
4

截至目前我使用的JavaScript搜索方法來代替身體HTML像下面一些文字..什麼是最好的方法來搜索正文的HTML一些文字

假設我的HTML是

<body> 
     <div> I am in body...</div> 
</body> 

然後我使用下面的方法

var body = $(body); 
var text = body.html(); 
text = text.replace('I am in body...','Yes'); 
body.html(text); 

但我可以看到像IE瀏覽器慢頁面搜索..
請給我建議,以提高日是,也請讓知道是否有任何插件,以搜索和匹配,即使它包含在任何HTML標記的字符串。像下面

<body> 
     <div><span>I </span> am in body...</div> 
</body> 

當前的方法我無法比擬的..
如果我使用

$('*:contains("some search text string")'); 

這將匹配DIV和BODY以及..但在這裏我想搜索的HTML文本沒有父元素...... 感謝

回答

3

你應該看看:

範圍:(修改文本,而不會覆蓋整個身體)

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


查找()/ FINDTEXT()(創建範圍)

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

(Opera不支持查找或FINDTEXT)


對此question小修改:

<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> 
+0

@ dr-molle非常非常感謝...我從長期尋找這個解決方案..你做我的日子 – Exception

+0

@ dr-molle你可以看看這個... http://jsfiddle.net/3gPbh/ ..請告訴我的代碼中的錯誤.. – Exception

+0

你沒有通過預期的參數,電話有'fx('我在身體...','是')' –

0

試試這個:

 
$(function() { 
    var foundin = $('body:contains("some search text string")'); 
}); 

希望它可以幫助

+0

我可以用$( '*:包含( 「某些搜索文本字符串」)');但我只是想搜索字符串不是父母..此外,這將符合父母的標籤和身體標籤.. – Exception

1

你會得到只包含完整的文本元素
沒有爲人父母的一些其他元素包含相同的文本

var str = "some search text string"; 
var elements = $("*:contains('"+ str +"')").filter(
        function(){ 
         return $(this).find("*:contains('"+ str +"')").length == 0 
        } 
       ); 
1

我覺得你的代碼工作得很好,但你的錯誤是你沒有弄清楚「身體」的內容。

這裏是你的代碼:

$(document).ready(function(){ 
    var body = $("body"); // your miss this 
    var text = body.html(); 
    text = text.replace('I am in body...','Yes'); 
    body.html(text); 
}); 
相關問題