sourcetip

jQuery 1.8+를 포함하여 jQuery Contains 대소문자를 구분하지 않게 하려면 어떻게 해야 합니까?

fileupload 2023. 10. 15. 17:34
반응형

jQuery 1.8+를 포함하여 jQuery Contains 대소문자를 구분하지 않게 하려면 어떻게 해야 합니까?

저는 "contains" 케이스를 무감각하게 사용하려고 합니다.다음 스택 오버플로 질문에서 솔루션을 사용해 보았지만 작동하지 않았습니다.

대소문자를 구분하지 않는 jQuery:contains selector가 있습니까?

편의를 위해 솔루션은 여기에 복사됩니다.

jQuery.extend(
        jQuery.expr[':'], { 
                Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" 
});

오류는 다음과 같습니다.

Error: q is not a function
Source File: /js/jquery-1.4.js?ver=1.4
Line: 81

제가 사용하는 곳은 여기입니다.

  $('input.preset').keyup(function() {
    $(this).next().find("li").removeClass("bold");
    var theMatch = $(this).val();
    if (theMatch.length > 1){
      theMatch = "li:Contains('" + theMatch + "')";
      $(this).next().find(theMatch).addClass("bold");
    }
  });

동일한 시나리오에서 원래 대소문자 구분 "contains"를 사용하면 오류 없이 작동합니다.생각나는 사람 있습니까?그렇게 해주시면 감사합니다.

이것은 제가 현재 프로젝트에서 사용하고 있는 것으로, 아무 문제가 없었습니다.이 형식에 더 좋은 운이 있는지 확인해 보십시오.

jQuery.expr[':'].Contains = function(a, i, m) { 
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
};

jQuery 1.8에서 변경된 API는 다음과 같습니다.

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

여기서 테스트해보실 수 있습니다.1.8 이상의 커스텀 셀렉터에 대한 자세한 내용은 여기서 Sizzle wiki를 확인해보세요.

정답은 맞지만 다음과 같은 내용만 포함한다는 점에 주목할 필요가 있습니다.:Contains, 그리고 가명이 아닌:contains예기치 않은 동작을 초래할 수 있습니다(또는 민감한 검색과 비감수한 검색이 모두 필요한 고급 응용프로그램의 경우 설계에 의해 사용될 수 있습니다).

이 문제는 별칭에 대한 확장을 복제하여 해결할 수 있습니다.

jQuery.expr[':'].Contains = function(a, i, m) { 
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
};
jQuery.expr[':'].contains = function(a, i, m) { 
  return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
};

나한테 왜 안 되는지 알아내는데 시간이 좀 걸렸어요.

저는 이런 걸 할 겁니다.

     $.expr[':'].containsIgnoreCase = function (n, i, m) {
        return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
    };

그리고 떠나라:contains혼자...

데모

그런데 왜 jQuery는 도서관에서 그것을 지원하지 않습니까?!그렇게 쉽다면...

왜냐하면 당신의 코드가 칠면조 코드를 통과합니까?

늦을지도 모르지만..

이쪽으로 가고 싶습니다.

$.extend($.expr[":"], {
"MyCaseInsensitiveContains": function(elem, i, match, array) {
return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
}
});

이렇게 하면 jQuery의 네이티브 'contains'를 건드릴 수 없습니다.나중에 기본값이 필요할 수도 있습니다... 변조된 경우 다시 스택 오버플로우로 돌아갈 수도 있습니다...

제 친구를 추가할 수 있도록 하겠습니다.

$.expr[":"].containsNoCase = function (el, i, m) { 
    var search = m[3]; 
    if (!search) return false; 
    return eval("/" + search + "/i").test($(el).text()); 
}; 

아래 코드를 사용하여 원하는 것을 달성하기 위해 jQuery의 대소문자 구분을 완전히 무시할 수 있었습니다.

            $.expr[":"].contains = $.expr.createPseudo(function(arg) {
            return function( elem ) {
                return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
            };
        });

이 링크를 사용하여 jQuery 버전을 기반으로 코드를 찾아 대소문자 구분을 무시할 수 있습니다. https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/

또한 만약 당신이 : contains하고 검색을 하기를 원한다면 당신은 이것을 보기를 원할지도 모릅니다: http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly . http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide-accordingly

언급URL : https://stackoverflow.com/questions/2196641/how-do-i-make-jquery-contains-case-insensitive-including-jquery-1-8

반응형