문제

가 대소문자를 구분하지 않전 :함 jQuery 를 선택해야 하나 수동으로 작업하여 반복을 통해 모든 요소와 비교합니다.텍스트()나열?

도움이 되었습니까?

해결책

내가 무슨 일을 했을 위한 jQuery1.2:

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

이 연장됩니다 jquery 을 포함하는 선택기는 대소문자를 구분하지 않,이:담 선택은 변경되지 않습니다.

편집:에 대한 jQuery1.3(감사@user95227)이상 필요하신

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

편집:분명히 액세스를 사용하여 직접 DOM

(a.textContent || a.innerText || "") 

jQuery(a).text()

이전 식 속도 그것은 상당히 그래서 당신의 자신의 위험에 시도하는 경우 속도가 문제입니다.(참조하십시오 @John ko 질문)

최신 편집:에 대한 jQuery1.8 야:

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

다른 팁

그것을 선택적으로 대소문자를 구분하지 않:http://bugs.jquery.com/ticket/278

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

다음 사용 :containsi:contains

로 jQuery1.3,이 방법은 사용되지 않습니다.이것이 그것을 정의할 필요 기능:

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

만약 누군가가(나 같은)관심이 무엇 am[3]담고 정의합니다.


키/범례:Params 사용할 수 있 jQuery 에서 사용하기 위해 선택의 정의:

r =jQuery 배열의 요소를 철저히 조사.(예를 들어: r.길이 =숫자의 요소)

=index 요소의 현재 조사에서,내열 r.

a =소재 조사를 실시한다.선택한 문 true 를 반환해야 합니다 그것을 포함하에 그것의 일치하는 결과입니다.

m[2] =노드 이름 또는*는 우리를 찾고(왼쪽에 콜론).

m[3] =param 로 전달되:선택(param).일반적으로 인덱스 번호로에서 :n-의 유형(5), 거나,문자열에서와 같이, :색상(블루).

에 jQuery1.8 을 사용해야 합니다

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

변형하는 것을 수행하는 약간 더 빠르고는 또한 용 정규 표현식 입니다:

jQuery.extend (
    jQuery.expr[':'].containsCI = function (a, i, m) {
        //-- faster than jQuery(a).text()
        var sText   = (a.textContent || a.innerText || "");     
        var zRegExp = new RegExp (m[3], 'i');
        return zRegExp.test (sText);
    }
);



뿐만 아니라 이 경우 구분하지 않지만,그것은 강력한 같은 검색:

  • $("p:containsCI('\\bup\\b')") (일치하""또는"최대한다"고 주장했다,그러나"upper","wakeup",등.)
  • $("p:containsCI('(?:Red|Blue) state')") (일치하는"빨간색 상태"또는"푸른 상태"있지만"상태",등.)
  • $("p:containsCI('^\\s*Stocks?')") (일치하는"주"또는"주",하지만 시작 단락의(무시하고 선도적 공백).)

될 수 있습 늦....하지만,

부를 확인하세요 이런 식으로 가..

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

이 방법은,당신 변조의 기본 jQuery '.담'...필요할 수 있습니다 기본적으로 하나 나중에...을 경우 변조,당신은 자신을 찾을 수 있습니다 다시 유래...

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

업데이트 코드 작품에서 중대한 1.3,그러나""를 포함해야 낮은 경우에는 첫 번째 편지와 달리 이전의 예입니다.

참조를 사용하려면 아래":"도 포함되어 텍스트를 찾을 무시하고 해당 경우에서 감도 HTML 코드

 $.expr[":"].contains = $.expr.createPseudo(function(arg) {
            return function( elem ) {
                return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
            };
        });
        $("#searchTextBox").keypress(function() {
          if($("#searchTextBox").val().length > 0){
            $(".rows").css("display","none");
            var userSerarchField = $("#searchTextBox").val();
            $(".rows:contains('"+ userSerarchField +"')").css("display","block");
          } else {
            $(".rows").css("display","block");
          }              
        });

할 수도 있습니다면 다음 링크를 사용하여 이를 발견한 경우를 무시 코드에 따라 jquery 전 게 jQuery:을 포함 대소문자를 구분

나는 유사한 문제는 다음과 같은 작동하지 않...

// This doesn't catch flac or Flac
$('div.story span.Quality:not(:contains("FLAC"))').css("background-color", 'yellow');

이 작품과에 대한 필요없이 확장

$('div.story span.Quality:not([data*="flac"])').css("background-color", 'yellow');

이 너무 작동하지만,아마 폭포에"수동으로 반복"카테고리....

$('div.story span.Quality').contents().filter(function()
{
  return !/flac/i.test(this.nodeValue);
}).parent().css("background-color", 'yellow');

빠른 버전을 사용하여 정규표현식이 있습니다.

$.expr[':'].icontains = function(el, i, m) { // checks for substring (case insensitive)
    var search = m[3];
    if (!search) return false;

    var pattern = new RegExp(search, 'i');
    return pattern.test($(el).text());
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top