선택할 때 대소문자를 무시하려면 jQuery를 어떻게 사용합니까?
-
03-07-2019 - |
문제
현재 다음 jQuery 선택기를 사용하여 링크를 비활성화하려고 합니다.
$("a[href$=/sites/abcd/sectors]").removeAttr("href");
문제는 때로는 페이지에서 href가 항상 소문자로 표시되지 않을 수도 있다는 것입니다.이런 일이 발생하면 선택기가 더 이상 일치하지 않습니다.
이 문제를 해결하는 방법을 아는 사람이 있나요?대소문자를 무시하도록 이번 한 번 동작을 변경할 수 있나요?
해결책
나는 이것에 직접 부딪쳤다.대소 문자없이 비교할 수 있도록 논리를 약간 전환했습니다.조금 더 많은 작업이 필요하지만 적어도 작동합니다.
$('a').each(function(i,n) {
var href = $(n).attr("href");
href = href.toLowerCase();
if (href.endsWith('/sites/abcd/sectors'))
$(n).removeAttr('href');
});
당신은 스스로 알아내야 할 것입니다 endsWith
논리.
다른 팁
jQuery는 확장되도록 만들어졌습니다.이를 수정하거나 대소문자를 구분하지 않는 선택기를 고유한 유형으로 추가할 수 있습니다.
jQuery에서 "is" 함수를 사용할 수 있습니다.대소문자를 구분하지 않습니다.
$("a").each(function() {
if ($(this).is("a[href$=/sites/abcd/sectors]")) {
$(this).removeAttr('href');
}
})
먼저 이것은 유효하지 포함되어 있으므로 표현식 \
,
메타 문자(예: !"#$%&'()*+,./:;<=>?@[\]^``{|}~
) 처럼
이름의 리터럴 부분인 경우 두 개의 백슬래시를 사용하여 문자를 이스케이프해야 합니다. \\
.
원본: http://api.jquery.com/category/selectors/
그래서 당신은 탈출해야합니다 /
에게 \\/
그래서 당신의 표정은 $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");
제휴하지 않습니다 StackOverflow