복붙노트

[JQUERY] jQuery를 사용하여 텍스트 문자열을 찾기?

JQUERY

jQuery를 사용하여 텍스트 문자열을 찾기?

해결법


  1. 1.jQuery를는이 방법이 포함되어 있습니다. 여기 당신을위한 단편이다 :

    jQuery를는이 방법이 포함되어 있습니다. 여기 당신을위한 단편이다 :

    <script type="text/javascript">
    $(function() {
        var foundin = $('*:contains("I am a simple string")');
    });
    </script>
    

    선택 위에 선택 대상 문자열을 포함하는 모든 요소. foundin는 일치하는 요소를 포함하는 jQuery를 객체가 될 것입니다. https://api.jquery.com/contains-selector/ :에있는 API 정보를 참조하십시오

    '*'와일드 카드주의 할 것은 당신이 당신은 아마하지 않으려 신체 요소는 HTML을 포함한 모든 요소를 ​​얻을 수 있습니다 것입니다. 의 이유는 대부분의 jQuery를 다른 장소에서의 예제는 $를 사용하는 것이 ( '사업부는 () "나는 간단한 문자열이다'포함 ')


  2. 2.보통의 jQuery 셀렉터는 DOM에서 "텍스트 노드"내에서 검색되지 않습니다. 당신이 .contents () 함수를 사용하는 경우, 텍스트 노드가 포함됩니다, 당신은 텍스트 문자열을 검색 필터에 텍스트 만 노드 및 nodeValue를 속성을 nodeType에 속성을 사용할 수 있습니다.

    보통의 jQuery 셀렉터는 DOM에서 "텍스트 노드"내에서 검색되지 않습니다. 당신이 .contents () 함수를 사용하는 경우, 텍스트 노드가 포함됩니다, 당신은 텍스트 문자열을 검색 필터에 텍스트 만 노드 및 nodeValue를 속성을 nodeType에 속성을 사용할 수 있습니다.

        $('*', 'body')
            .andSelf()
            .contents()
            .filter(function(){
                return this.nodeType === 3;
            })
            .filter(function(){
                // Only match when contains 'simple string' anywhere in the text
                return this.nodeValue.indexOf('simple string') != -1;
            })
            .each(function(){
                // Do something with this.nodeValue
            });
    

  3. 3.이것은 "나는 간단한 문자열입니다"를 포함 바로 잎 요소를 선택합니다.

    이것은 "나는 간단한 문자열입니다"를 포함 바로 잎 요소를 선택합니다.

    $('*:contains("I am a simple string")').each(function(){
         if($(this).children().length < 1) 
              $(this).css("border","solid 2px red") });
    

    테스트 할 수있는 주소 표시 줄에 다음을 붙여 넣습니다.

    javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false;
    

    방금 잡아하려면 "나는 간단한 문자열입니다." 처음과 같이 요소의 텍스트를 바꿈.

    $('*:contains("I am a simple string")').each(function(){
         if($(this).children().length < 1) 
              $(this).html( 
                   $(this).text().replace(
                        /"I am a simple string"/
                        ,'<span containsStringImLookingFor="true">"I am a simple string"</span>' 
                   )  
               ) 
    });
    

    다음이 작업을 수행.

    $('*[containsStringImLookingFor]').css("border","solid 2px red");
    

  4. 4.당신은 단지 텍스트 당신, 당신이 사용할 수에있는 거 검색에 노드에 가장 가까운을 원하는 경우 :

    당신은 단지 텍스트 당신, 당신이 사용할 수에있는 거 검색에 노드에 가장 가까운을 원하는 경우 :

    $('*:contains("my text"):last');
    

    당신의 HTML의 모습이 같은 경우에도 작동합니다 :

    <p> blah blah <strong>my <em>text</em></strong></p>
    

    즉 그 전체 문자열을 포함하는 마지막 태그이기 때문에 위의 선택기를 사용하여,의 태그를 찾을 수 있습니다.


  5. 5.하이라이트 (jQuery 플러그인)를 살펴 보자.

    하이라이트 (jQuery 플러그인)를 살펴 보자.


  6. 6.이것이 내가 찾던으로 나에게 90 %를 가지고 있지만 작동하지 않았다으로 그냥 토니 밀러의 대답에 추가. .length> 0을 추가; 그의 코드의 끝에 내 스크립트 작업을 얻었다.

    이것이 내가 찾던으로 나에게 90 %를 가지고 있지만 작동하지 않았다으로 그냥 토니 밀러의 대답에 추가. .length> 0을 추가; 그의 코드의 끝에 내 스크립트 작업을 얻었다.

     $(function() {
        var foundin = $('*:contains("I am a simple string")').length > 0;
     });
    

  7. 7.이 기능은 작동합니다. 우리가 리프 노드의 별개의 목록을 얻을 때까지 기본적으로 재귀 조회를 수행합니다.

    이 기능은 작동합니다. 우리가 리프 노드의 별개의 목록을 얻을 때까지 기본적으로 재귀 조회를 수행합니다.

    function distinctNodes(search, element) {
        var d, e, ef;
        e = [];
        ef = [];
    
        if (element) {
            d = $(":contains(\""+ search + "\"):not(script)", element);
        }
        else {
                d = $(":contains(\""+ search + "\"):not(script)");
        }
    
        if (d.length == 1) {
                e.push(d[0]);
        }
        else {
            d.each(function () {
                var i, r = distinctNodes(search, this);
                if (r.length === 0) {
                    e.push(this);
                }
                else {
                    for (i = 0; i < r.length; ++i) {
                        e.push(r[i]);
                    }
                }
            });
        }
        $.each(e, function () {
            for (var i = 0; i < ef.length; ++i) {
                if (this === ef[i]) return;
            }
            ef.push(this);
        });
        return ef;
    }
    
  8. from https://stackoverflow.com/questions/926580/find-text-string-using-jquery by cc-by-sa and MIT license