2009-03-06 3 views
16

나는 현재 다음의 jQuery 셀렉터를 사용하여 연결을 해제하려고 해요 :어떻게 jQuery를 사용하여 대소 문자를 무시합니까?

$("a[href$=/sites/abcd/sectors]").removeAttr("href"); 

문제는 때때로 HREF 항상 페이지의 소문자하지 않을 수 있다는 것입니다. 이 경우 선택 도구가 더 이상 일치하지 않습니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까? 이 동작을 한 번 변경하여 대소 문자를 무시할 수 있습니까?

+0

$("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href"); 될 것 이스케이프해야합니다 당신은 jQuery를 최신 버전을 사용하고 있습니까? 난 그냥 대문자 HREF와 소문자 href가있는 페이지에서 FF로 1.3.2를 사용하여 선택기를 테스트했기 때문에 매번 둘 다 일치했습니다. 어떤 브라우저에서 문제가 발생합니까? – cdmckay

+0

jQuery 1.3.2 with IE 7 - 그냥 두 번 확인하고 문제가 여전히 발생하고 있습니다. –

+0

@cdmckay : OP는 URL이 항상 소문자가 아닐 수도 있음을 의미한다고 생각합니다. –

답변

14

나는이 문제에 스스로 부딪쳤다. 나는 그 사건을 비교하지 않고 논리를 조금 바꿨다. 조금 더 많은 작업이 필요하지만 적어도 작동합니다.

$('a').each(function(i,n) { 
    var href = $(n).attr("href"); 
    href = href.toLowerCase(); 
    if (href.endsWith('/sites/abcd/sectors')) 
     $(n).removeAttr('href'); 
}); 

당신은 자신의 endsWith 논리를 알아 내야 할 것입니다.

+0

감사합니다. 나는 끝을 위해 정규 표현식을 사용했습니다. 그런데 toLower()는 toLowerCase() 여야합니다. –

+0

아, 고마워. 나는 이것을 기억에서하고 덩어리를 잊었다. 나는 그것을 업데이트했다. – EndangeredMassa

1

당신은 기능을 사용할 수는 jQuery를에 "입니다". 대소 문자를 구분하지 않습니다.

$("a").each(function() { 
    if ($(this).is("a[href$=/sites/abcd/sectors]")) { 
     $(this).removeAttr('href'); 
    } 
    }) 
+0

나는 이것을 테스트했지만 작동하지 않습니다. – Magu

1

\를 포함하고 있기 때문에이 유효하지 표현 첫째,

당신이

의 리터럴 부분으로 메타 문자 (예 : !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) 중 하나를 사용하려면 이름을 사용하려면 두 개의 백 슬래시 (\\)로 문자를 이스케이프 처리해야합니다.

의 Src : http://api.jquery.com/category/selectors/

그래서 당신은이 /

\\/에 그래서 당신의 표현이