2011-10-31 2 views
6

HTML 내에서 특정 텍스트를 선택합니다 :사용의 jQuery .filter는() 사업부

<p class="greeting"> 
    hello, my name is kevin. what's yours? 
</p> 

jQuery를 :

$("p.greeting").filter(function(){ 
    return $this.text() === "my name is"; 
}).css("background", "green"); 

나는 단어를 분리하기 위해 노력하고있어를 <p class="greeting"> 태그에 "내 이름은" . jQuery가 작동하지 않는 것처럼 누군가 도와 줄 수 있습니까? 감사.

+0

가능한 복제본 http://stackoverflow.com/questions/926580/find-text-string-using-jquery – motoxer4533

답변

8

당신이 이동 :

CSS :

.highlight { background-color: yellow; } 

자바 스크립트 :

var text = 'My namE iS'; 

$('p.greeting').html(function (i, html) { 
    var regexp, replacement; 

    regexp = RegExp('(' + text + ')', 'gi'); 
    replacement = '<span class="highlight">$1</span>'; 

    return html.replace(regexp, replacement); 
}); 

라이브 데모 :http://jsfiddle.net/SGCDS/5/

+0

질문의 요구 사항을 완전히 충족 시키려면이 코드에 클래스를 설정하고 해당 클래스를 "녹색"배경으로 .css 설정해야합니다. – Bruce

+0

끝내 주셔서 감사합니다! 대문자와 소문자를 구별하는'var text '를 사용하는 간단한 방법이 있습니까? – pruett

+1

@ Bruce 좋은 조언. 벌써 했어. 노란색 배경색을 선호합니다. 영업장에서 초록색으로 바꿀 수 있습니다 ... –

0

당신은 항상 false를 반환합니다. div에 정확하게 "my name is"이있는 경우에만 true를 반환합니다.

이런 식으로 뭔가를 시도 : 여기

return $(this).text().indexOf("my name is") != -1; 
+0

음 ... 작동하지 않는 것 같습니다. -1 a nodeType입니까? 나는 이것에 익숙하지 않다 – pruett

+1

나는 text()에 "my name is"이라는 하위 문자열이 없으면 .indexOf()가 -1을 반환한다고 주장한다. – Bruce