[JQUERY] jQuery를 구분하지 않는 경우가있다 : 선택기를 포함?
JQUERYjQuery를 구분하지 않는 경우가있다 : 선택기를 포함?
해결법
-
1.내가 jQuery를 1.2 일을 결국 것은 :
내가 jQuery를 1.2 일을 결국 것은 :
jQuery.extend( jQuery.expr[':'], { Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" });
이것은 가지고 JQuery와 연장됩니다 경우를 구분하지 않습니다 선택기를 포함의 : 선택은 그대로 유지가 포함되어 있습니다.
편집 : jQuery를 1.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()
이전 식을 속도에서 속도가 문제가되는 경우 상당히 그래서 당신의 자신의 위험에보십시오. (@ 존의 질문 참조)
최신 편집 : jQuery를 1.8 것이되어야합니다 :
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) { return function( elem ) { return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; });
-
2.이 선택적으로 대소 문자를 구분 만들려면 : http://bugs.jquery.com/ticket/278
이 선택적으로 대소 문자를 구분 만들려면 : 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 대신을 : 포함
-
3.jQuery를 1.3로,이 방법은 사용되지 않습니다. 작업이를 얻으려면이 함수로 정의 할 필요가있다 :
jQuery를 1.3로,이 방법은 사용되지 않습니다. 작업이를 얻으려면이 함수로 정의 할 필요가있다 :
jQuery.expr[':'].Contains = function(a,i,m){ return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0; };
-
4.(나 같은) 사람이 관심이 있다면 a와 m [3] 평균에서이 정의를 포함하는 일.
(나 같은) 사람이 관심이 있다면 a와 m [3] 평균에서이 정의를 포함하는 일.
KEY / 전설 :에 Params 셀렉터 정의에 사용하기 위해 jQuery를에 의해 제공 :
R = 요소의 jQuery 배열 자세히 조사된다. (예 : r.length = 요소의 수)
저는 어레이 내에 R, 현재 주목 받고 요소의 인덱스 =.
현재 주목 받고 A = 요소. 선택기 문은 일치하는 결과에 포함하는 경우는 true 반환해야합니다.
m [2] = * 여기서 nodeName 또는 그 우리 찾는 콜론 (왼쪽).
m [3] = PARAM에 전달 : 선택기 (PARAM). 일반적으로하는 인덱스 번호 : n 번째의 식 (5), 또는 같은 문자열 : 색 (파란색).
-
5.jQuery를 1.8에서 당신은 사용해야합니다
jQuery를 1.8에서 당신은 사용해야합니다
jQuery.expr[":"].icontains = jQuery.expr.createPseudo(function (arg) { return function (elem) { return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; });
-
6.보이는 변화는 약간 빠른 수행하고 또한 정규 표현식입니다 수 있습니다 :
보이는 변화는 약간 빠른 수행하고 또한 정규 표현식입니다 수 있습니다 :
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); } );
뿐만 아니라이 대소 문자를 구분하지만 같은 강력한 검색을 할 수 있습니다 :
-
7.늦을 수 있습니다 ....하지만,
늦을 수 있습니다 ....하지만,
나는이 길을 갈 선호하는 것 ..
$.extend($.expr[":"], { "MyCaseInsensitiveContains": function(elem, i, match, array) { return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; } });
이런 식으로, 당신은 당신이 무단으로 변경하는 경우 기본 하나 나중에 ... 다시 유래에 자신을 찾을 수 있습니다해야 할 수도 있습니다 ... jQuery의 NATIVE '.contains'하지 변조 DO ...
-
8.
jQuery.expr[':'].contains = function(a,i,m){ return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0; };
업데이트 코드는 1.3에서 잘 작동하지만, 앞의 예와는 달리 첫 글자에 소문자해야 "할 수 있습니다."
-
9.사용 아래를 참조하십시오 "포함"텍스트는 HTML 코드에서의 대소 문자 구분을 무시 찾기 위해,
사용 아래를 참조하십시오 "포함"텍스트는 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를 확인 : 대소 문자 구분을 포함
-
10.정규 표현식을 사용하는 빠른 버전.
정규 표현식을 사용하는 빠른 버전.
$.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()); };
-
11.나는하지 다음 작업에 비슷한 문제가 있었다 ...
나는하지 다음 작업에 비슷한 문제가 있었다 ...
// 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');
-
12.새로운 나는 그것이 문자열의 이름을 지정하고 일부 요소 텍스트에서 검색 할 문자열을 넣어주는 변수입니다. 그런 다음 JQuery와 선택기 요소를 선택하여 당신은 () .filter에 의해 내 예를 들어 $ ( "elementsYouNeed") 및 필터처럼 필요가있다. .filter에서 ()는 함수와 $의 각 요소 ( "elementsYouNeed")를 비교합니다.
새로운 나는 그것이 문자열의 이름을 지정하고 일부 요소 텍스트에서 검색 할 문자열을 넣어주는 변수입니다. 그런 다음 JQuery와 선택기 요소를 선택하여 당신은 () .filter에 의해 내 예를 들어 $ ( "elementsYouNeed") 및 필터처럼 필요가있다. .filter에서 ()는 함수와 $의 각 요소 ( "elementsYouNeed")를 비교합니다.
그것에 문자열이있는 경우에는 기능 또한 그 캔 않도록 대소 문자 조건 검사 문자열 요소 텍스트 .toLowerCase ()을 사용. .filter () 메소드는 정합 소자들의 서브 세트로부터 새로운 jQuery를 객체를 생성 이후.
이제 matchObjects에서 일치하는 요소를 얻을 당신이 원하는대로 할 수 있습니다.
var subString ="string you want to match".toLowerCase(); var matchObjects = $("elementsYouNeed").filter(function () {return $(this).text().toLowerCase().indexOf(subString) > -1;});
from https://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 왜 jQuery의 아약스는 내 세션 쿠키를 전송하지 () 메소드입니까? (0) | 2020.09.26 |
---|---|
[JQUERY] jQuery를 클릭 이벤트 클래스를 추가 한 후 작동하지 (0) | 2020.09.26 |
[JQUERY] 나는 "catch되지 않은 구문 에러를 : 예기치 않은 토큰 (을)를"점점 계속 (0) | 2020.09.26 |
[JQUERY] jQuery를 SVG, 왜 안 나는 addClass 수 있습니까? (0) | 2020.09.26 |
[JQUERY] 사람이 JSONP는 평신도의 관점에서 무엇인지 설명 할 수 있습니까? [복제] (0) | 2020.09.26 |