2009-09-16 4 views
24

jQuery의 텍스트를 기반으로 요소를 선택해야합니다. 예를 들어jQuery 텍스트 기반 선택

:

<span>this text</span> 

나는() 텍스트를 기반으로 선택하는 .contains을 사용할 수 있습니다 알고 있지만 독점이 아니다.

내가 선택하고 싶지 않은 : 나는 요소의 텍스트 만의 경우 요소를 선택합니다

<span>this text and that text</span> 

.

정규식을 사용하는 것 외에도 jQuery 선택기로 어떻게 할 수 있습니까?

감사합니다.

답변

34

: contains 선택기를 사용하면 약간의 효과가 있지만 지금까지는 진행됩니다.

$("span:contains(this text)") 
.filter 
(
    function() 
    { 
    return $(this).text() === "this text"; 
    } 
) 

이 초기 사용량은 기술적으로 불필요한 포함되어 있습니다,하지만 당신의 작은 컬렉션을 함께 시작하여 성능 향상을 경험할 수 있습니다 : 당신은 더 같이 정확한 텍스트 일치를 기반으로 요소의 설정을 트림해야합니다 SPAN 요소는 정확한 세트까지 필터링 전에 관심

편집는 :. filter 함수 내 문자열 비교 대신 innerHTMLtext() 기능을 사용 켄 브라우닝의 제안을했다. 아이디어가 innerHTML이면 우리가 특별히 관심이없는 텍스트 (마크 업 포함)를 캡처합니다.

+4

좋은 답변이지만 '$ (this) .text()'대신 'innerHTML'을 사용해야하는 이유는 무엇입니까? 'innerHTML'을 사용하지 않으면 기준에 인코딩해야하는 문자가 포함될 경우 (예 : &&> &) –

+0

계정을 요구하지 않을 것입니다. 질식을 위해 +1과 답을 추천했습니다. –

+0

@DavidAndres'innerHTML' 대신'.text()'보다 빠르며 마크 업을 포함하지 않는'innerText'를 사용할 수도 있습니다. – hitautodestruct