복붙노트

[JQUERY] 그 내용의 일치에 의해 요소를 선택

JQUERY

그 내용의 일치에 의해 요소를 선택

해결법


  1. 1.아니, 그 않는 어떤 jQuery를 (또는 CSS) 셀렉터가 없습니다.

    아니, 그 않는 어떤 jQuery를 (또는 CSS) 셀렉터가 없습니다.

    당신은 쉽게 필터를 사용할 수 있습니다 :

    $("p").filter(function() {
        return $(this).text() === "hello";
    }).css("font-weight", "bold");
    

    그것은 선택은 아니지만, 작업을 수행합니다. :-)

    당신이 이전 또는 이후에 공백을 처리하는 경우, "안녕하세요", 당신은 던질 수있는 $ .trim에있다 :

    return $.trim($(this).text()) === "hello";
    

    거기 조기 최적화를 위해, 당신은 일치하지 않음을 걱정하지 않는 경우

    안녕하세요 와 유사한, 직접 innerHTML을 사용하여 $와 텍스트에 대한 호출을 방지 할 수 있습니다 :

    return this.innerHTML === "hello";
    

    이 문제에 대한 ...하지만 당신은 아마 첫번째 다른 문제가있을 거라고 많은, 단락을 많이 가지고해야 할 것이다. :-)


  2. 2.의사 확장 기능을 추가하십시오 :

    의사 확장 기능을 추가하십시오 :

    $.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
        return function( elem ) {
            return $(elem).text().match("^" + arg + "$");
        };
    });
    

    그럼 당신은 할 수 있습니다 :

    $('p:textEquals("Hello World")');
    

  3. 3.이 작업을 달성하기 위해 jQuery의 필터 () 함수를 사용할 수 있습니다.

    이 작업을 달성하기 위해 jQuery의 필터 () 함수를 사용할 수 있습니다.

    $("p").filter(function() {
    // Matches exact string   
    return $(this).text() === "Hello World";
    }).css("font-weight", "bold");
    

  4. 4.그래서 Amandu의 대답은 대부분 작동합니다. 야생에서 그것을 사용하지만, 내가 발견을 얻을 것으로 예상 한 것이다 것을 발견하기되지 않은 일부 문제 다 퉜다. 때로는 요소의 텍스트를 둘러싼 임의의 공백이 있기 때문이었다. 그것은 "안녕하세요"에 대한 당신이 경우에있는 거 검색, 당신은 여전히 ​​"안녕하세요"또는 "안녕하세요 \ n"을 일치시킬 것이 나의 신념이다. 따라서, 난 그냥 공백을 둘러싼 제거 기능에 "트림 ()"방법을 추가하고, 더 나은 작업을 시작했다.

    그래서 Amandu의 대답은 대부분 작동합니다. 야생에서 그것을 사용하지만, 내가 발견을 얻을 것으로 예상 한 것이다 것을 발견하기되지 않은 일부 문제 다 퉜다. 때로는 요소의 텍스트를 둘러싼 임의의 공백이 있기 때문이었다. 그것은 "안녕하세요"에 대한 당신이 경우에있는 거 검색, 당신은 여전히 ​​"안녕하세요"또는 "안녕하세요 \ n"을 일치시킬 것이 나의 신념이다. 따라서, 난 그냥 공백을 둘러싼 제거 기능에 "트림 ()"방법을 추가하고, 더 나은 작업을 시작했다.

    구체적으로 특별히...

    $.expr[':'].textEquals = function(el, i, m) {
        var searchText = m[3];
        var match = $(el).text().trim().match("^" + searchText + "$")
        return match && match.length > 0;
    }
    

    또한, 참고,이 대답은 매우 유사하다 텍스트로 선택 링크 (일치)

    그리고 보조 노트 ... 트림은 이전과 텍스트를 검색 한 후 공백을 제거합니다. 이 단어의 중간에 공백을 제거하지 않습니다. 나는 이것이 바람직한 행동이라고 생각,하지만 당신은 당신이 원하는 경우 것으로 변경 될 수 있습니다.


  5. 5.나는 나를 위해 작동하는 방법을 발견했다. 그것은 100 % 정확한 것은 아니지만 그것은 더 내가 문자열이 너무 개인 공간을 포함하지 않는 확인하기 때문에 찾고 있어요 단지 단어 이상이 포함 된 모든 문자열을 제거합니다. 그런데 이러한 ""필요하지 않습니다. jQuery를 사용하면 문자열을 찾고 있습니다 알고있다. 확실히 당신은 단지 하나 개의 공간이 있는지 확인하십시오 : 포함 () 부분 그렇지 않으면 작동하지 않습니다.

    나는 나를 위해 작동하는 방법을 발견했다. 그것은 100 % 정확한 것은 아니지만 그것은 더 내가 문자열이 너무 개인 공간을 포함하지 않는 확인하기 때문에 찾고 있어요 단지 단어 이상이 포함 된 모든 문자열을 제거합니다. 그런데 이러한 ""필요하지 않습니다. jQuery를 사용하면 문자열을 찾고 있습니다 알고있다. 확실히 당신은 단지 하나 개의 공간이 있는지 확인하십시오 : 포함 () 부분 그렇지 않으면 작동하지 않습니다.

    <p>hello</p>
    <p>hello world</p>
    $('p:contains(hello):not(:contains( ))').css('font-weight', 'bold');
    

    그리고 그래 난 당신이 같은 물건이있는 경우 작동하지 알고

    helloworld를


  6. 6.마찬가지로 T.J. 크라우 더는 위에서 언급 한, 필터 기능은 경이를한다. 그것은 내 특정 사건에 나를 위해 작동하지 않았다. 나는 (이 경우 JQuery와의 대화에서) 사업부 내부에 여러 테이블과 각각의 TD 태그를 검색 할 필요가 있었다.

    마찬가지로 T.J. 크라우 더는 위에서 언급 한, 필터 기능은 경이를한다. 그것은 내 특정 사건에 나를 위해 작동하지 않았다. 나는 (이 경우 JQuery와의 대화에서) 사업부 내부에 여러 테이블과 각각의 TD 태그를 검색 할 필요가 있었다.

    $("#MyJqueryDialog table tr td").filter(function () {
        // The following implies that there is some text inside the td tag.
        if ($.trim($(this).text()) == "Hello World!") {
           // Perform specific task.
        }
    });
    

    나는이 사람에게 도움이 희망!


  7. 7.jQuery를 대안 라이브러리와 함께 작동하는 한 줄 :

    jQuery를 대안 라이브러리와 함께 작동하는 한 줄 :

    $('p').filter((i, p) => $(p).text().trim() === "hello").css('font-weight', 'bold');
    

    그리고 이것은 jQuery를에 동등 물은의이다 : 포함 ( "패턴") 선택은 :

    var res = $('a').filter((i, a) => $(a).text().match(/pattern/));
    

  8. 8.좁은 방 () 여기에 도움이 될 것입니다

    좁은 방 () 여기에 도움이 될 것입니다

    $('p:contains("hello")').first().css('font-weight', 'bold');
    
  9. from https://stackoverflow.com/questions/15364298/select-element-by-exact-match-of-its-content by cc-by-sa and MIT license