2011-02-05 57 views
0

我正在使用jQuery並創建現在的搜索。我想改變搜索匹配的所有單詞。在搜索結果中選擇js的單詞

例如:

我在文本框中輸入「世界你好」,劇本得到網頁上的所有單詞「你好」和「世界」和替換它的「<b class="search_word">hello</b>」和「<b class="search_word">word</b>」。

可能嗎?

PS。

在div中搜索但div包含許多其他html元素。

我現在用的這個:

if ($("#search_input").val() != "") { 
    var words = $("#search_input").val().split(/\s/g) 
    for (var i = 0; i < words.length; i++) { 
     var new_reg = new RegExp(words[i], 'gi'); 
     var replaced = $(".content_area").html().replace(new_reg, "<b class='searched_word'>"+words[i]+"</b>") 
     $(".content_area").html(replaced); 
    } 
} 

它的工作原理,但標籤...

如果我搜索類似:「B類是學校最好的類」,它破壞頁面結構

+0

你說的「頁」,你在一個DIV或P元素的意思,或確實意味着「在頁面上的整個HTML中的任何地方?第一個很容易,後者更困難。相關HTML的列表將對人們回答這個問題很有用。」 – Neil 2011-02-05 14:51:49

回答

2

啊好吧,我明白了 「的onpage」 搜索... HM ....

這是How do I select text nodes with jQuery?

01副本
var getTextNodesIn = (function() { 
    function textNodeFilter() { 
     return this.nodeType == 3; 
    } 

    return function(el) { 
     var $el = $(el); 
     return $el 
      .contents() 
      .filter(textNodeFilter) 
      .add(
       $el 
        .find("*") 
        .contents() 
        .filter(textNodeFilter) 
      ); 
    }; 
})(); 

現在您現在可以使用

getTextNodesIn("body").each(function() { 
var txt = $(this).text(); 
$(this).text(txt.replace(new RegExp(myWord,"g"), "<b>" + myWord + "</b>")); 
}); 

遍歷所有這些,APLY先前寫入我的過濾器。

有哪裏找到你的話,你必須選擇整個文本,並替換找到的字與找到字

+0

幾乎是,但不是真的 – Mirgorod 2011-02-05 14:20:40

相關問題