2012-07-18 8 views
2

핵심 단어를 가져 와서 CSS로 강조 표시/색상 지정해야하는 프로그램이 있습니다.jQuery : 문자열 배열에서 다중 범위 작성

사용자가 모두 강조한 단어를 변경하고 싶기 때문에 jQuery를 사용하고 있습니다.

는 지금 문제는 이 (야호)는, 대신에 모든 것이 을 강조하기되지 않는다는 것을 강조지고 아무 것도 (오)하지 않습니다. 나는 여러 단어를 훑어 보며 (balloon, Dorothy, cyclone)을 강조하고 있지만 어떤 경우에는 특정 단어가 모두 착색되지는 않습니다.

잘하면 this jsFiddle thing가 내가 할 수있는 것보다 더 잘 설명하는 데 도움이됩니다. 두 번째 줄에서 첫 단어와 키워드 Dorothy가 내가 기대했던 것처럼 빨갛지 않다는 것을 알 수 있습니다.

감사합니다. 죄송합니다. 너무 모순되거나 의견이 있으면

+0

크롬에 바이올린을 넣을 때 도로시가 빨간색입니다. 괜찮아. – dezman

+0

두 번째 단락에 없습니다 – Wex

+0

오른쪽, 죄송합니다, 1 초 – dezman

답변

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>'템플릿으로 바꿉니다. replace 메서드의 '$&'은 현재 일치하는 단어를 나타냅니다.

+1

$ 및 $ 1 간의 차이점은 무엇입니까? – mkoryak

+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

+0

이것은 훌륭하게 작동합니다! 초보자로서 나는 regexp가 무엇인지 이해하기 위해 읽어야 할 것이다. 대단히 감사합니다. – enche