我目前有一個腳本,用於在頁面中搜索用戶鍵入的單詞,並在找到該單詞時加亮該單詞。如何爲字符串搜索多個文本節點
但是,當用戶在他們正在搜索的字符串中放置空格時,這會失敗,因爲我正在使用jQuery將文檔文本分割爲節點,並檢查每個節點是否包含當前搜索短語。
我想要做的就是展開這個搜索用戶定義的字符串,而不是在第一個空格之後失敗。不過,我不確定該怎麼做,所以我希望有人能幫助我。
這裏就是我目前有工作,找到節點:
keyup(function({
$(instance.textWrapper).html(instance.getOriginalText());
if (this.value.length >= instance.startSearchingLength) {
var regx = new RegExp("(" + escape(this.value) + ")", 'gi');
$(instance.textWrapper).each(function() {
var textNodes = $(this).find('*').contents().filter(function(){
return this.nodeType === 3
});
textNodes.each(function(){
var $this = $(this);
var content = $this.text();
content = content.replace(regx,
'<span class="'
+ instance.highlightCssClass +
'">$1</span>');
$this.replaceWith(content);
});
});
}
startSearchingLength
較早的長度搜索必須要搜索的定義。 highlightCssClass
恰恰是CSS類在將字符串包裝後才發現的。失敗的
例子:
搜索foo bar
將突出foo
每個實例在頁面上,但一旦遇到空間,這些亮點走開,滿弦無法找到。
因此,代碼當前搜索每個個人Text Node
作爲搜索查詢,但我希望讓腳本在文件的所有文本中找到任何字符串。我不知道如何做到這一點,所以任何幫助將不勝感激!
謝謝!
「regx」呢?不要忘了一個具體的例子,當它失敗時,你在它 – Alexander 2012-08-07 19:08:14
掛起,我會編輯這個真正的快速,對不起,關於 – 2012-08-07 19:10:45
我記得最近分享[這](http://codemirror.net/)鏈接一個相關的帖子。它可以幫助你。 – Prasanth 2012-08-07 19:22:48