대소 문자를 구분하지 않고 “포함”을 사용하려고합니다. 다음 stackoverflow 질문에서 솔루션을 사용해 보았지만 작동하지 않았습니다.
대소 문자를 구분하지 않는 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");
}
});
동일한 시나리오에서 원래 대소 문자 구분 “포함”을 사용하면 오류없이 작동합니다. 누구에게 아이디어가 있습니까? 감사합니다.
답변
이것은 현재 프로젝트에서 사용하고 있으며 문제가 없었습니다. 이 형식으로 더 나은 운이 있는지 확인하십시오.
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
jQuery 1.8에서 이에 대한 API가 변경되었으며 jQuery 1.8+ 버전은 다음과 같습니다.
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
여기에서 테스트 할 수 있습니다 . 1.8 개 이상의 사용자 지정 선택기에 대한 자세한 내용은 여기에서 Sizzle 위키를 확인하세요 .
답변
대답은 정확하지만 예상치 못한 동작을 유발할 수 :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의 NATIVE ‘.contains’를 조작 하지 마십시오. 나중에 기본값이 필요할 수 있습니다 … 조작하면 stackOverFlow로 돌아갈 수 있습니다 .
답변
내 친구를 추가 할 수 있습니다.
$.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;
};
});
이 링크를 사용하여 https://css-tricks.com/snippets/jquery/make-jquery-contains-case-insensitive/에서 대소 문자 구분을 무시하는 jQuery 버전을 기반으로 코드를 찾을 수 있습니다.
또한 : contains를 사용하고 검색을하려면 http://technarco.com/jquery/using-jquery-search-html-text-and-show-or-hide-를 살펴볼 수 있습니다. 따라서