2012-07-18 66 views
2

我有一個程序,應該採取關鍵詞,並突出顯示/使用CSS顏色。jQuery:從字符串數組創建多個跨度

我正在使用jQuery,因爲我想最終更改哪些單詞突出顯示,全部由用戶完成。

現在的問題不在於什麼是越來越突出(耶),而是說不是一切都沒有得到突出(哦不)。我有幾個詞設置要通過並突出顯示(氣球,多蘿西,旋風)但通常會發生的是,並非所有,如果有的話,某些單詞會變成彩色。

但願this jsFiddle thing可以比我更好地解釋它。第二行你會注意到,第一個單詞和關鍵字Dorothy並不像我所期望的那樣是紅色的。

謝謝。對不起,如果我太不連貫或任何東西,反饋表示讚賞

+0

當我將你的小提琴加載到鍍鉻物中時,多蘿西是紅色的。看起來很好。 – dezman 2012-07-18 18:10:24

+0

不在第二段 – Wex 2012-07-18 18:10:47

+0

對不起,對不起,一秒 – dezman 2012-07-18 18:11:21

回答

4

this你想要什麼?

$(function(){ 
    var keyWord = new Array("Dorothy","cyclone","miles","house","balloon"); 
    var regexp = new RegExp(keyWord.join("|"),"g"); 
    $('#oz li').html(function(i,value){ 
      return value.replace(regexp , 
       '<span containsStringImLookingFor="true" id="$&">$&</span>'); 
    }); 
}); 

說明

regexp/Dorothy|cyclone|miles|house|balloon/g正則表達式,相匹配的陣列中的所有列出的詞語。 .replace()方法用'<span containsStringImLookingFor="true" id="{matched word}">matched word</span>'模板替換所有匹配的單詞。替換方法中的'$&'表示當前匹配的單詞。

+1

$&和$ 1之間的區別是什麼? – mkoryak 2012-07-18 18:21:06

+2

@mkoryak閱讀[MDN](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter)。同樣對於'$ 1',你需要使用額外的'()'括號,同樣''.replace(/(Dorothy)/ h,'$ 1')',這對'$&' – Engineer 2012-07-18 18:22:40

+0

來說並不需要,這似乎很好用!作爲一個新手,我將不得不閱讀了解什麼是正則表達式。非常非常感謝你 – enche 2012-07-19 15:54:20