2013-09-27 3 views
0

example.com/mine/first에서 시작하는 모든 URL에 CSS 클래스를 추가해야합니다. 루트 주소에서 클래스를 추가하는 방법을 알고 있지만/mine/first 경로에서는이 작업을 수행 할 수 없습니다.jQuery는 URL 경로에 따라 달라집니다.

<script type="text/javascript"> 
$(function(){ 
    var pathnameArr = location.pathname.split('/'); 
    switch (pathnameArr[1]) { 
case 'mine/first': 
    $(".container").addClass('dontshow'); 
break; 
case 'mine/second': 
    $(".container").addClass('dontshow'); 
break; 
} 
}); 
</script> 

감사 :

이 내가 가진 것입니다.

+3

는 '내/첫 번째'없을 것 값을. –

+1

'split ('/')'하면'pathnameArr [1]'에'mine'을,'pathnameArr [2]'에는'first'을 얻을 것입니까? – Blaise

+0

이것을 디버깅하고'console.log (pathnameArr [1])'이 무엇인지 확인 했습니까? – epascarello

답변

1

RegExp.prototype.test을 사용할 수 있습니다 테스트하는 강력한 방법 : "/"당신의 구분 기호 인 경우

$(function() { 
    if ((/^\/mine\/(first|second?)/).test(window.location.pathname)) { 
    $('.container').addClass('dontshow'); 
    } 
}); 
+0

정규식을'/ ^// mine \/(. +?)'로 바꾸면'/ mine /'다음에 오는 모든 경로로 확장 할 수 있습니다.'/ mine/first','/ mine/second', /mine/whatever' 등 –

+0

Travis, 감사하지만 Chromium에서 "Uncaught SyntaxError : 잘못된 정규식 : 누락 /"오류 만 있습니다. – loadaverage

+0

아, 죄송합니다 :) 지금 작업해야합니다! –

1

"/"는 구분 기호이므로 "/"는 pathnameArr의 값에 표시되지 않습니다. 대신 마지막 매개 변수를 켜십시오.

$(function(){ 
    var pathnameArr = location.pathname.split('/'); 
    switch (pathnameArr.pop()) { 
     case 'first': 
      $(".container").addClass('dontshow'); 
      break; 
     case 'second': 
      $(".container").addClass('dontshow'); 
      break; 
    } 
}); 
+0

example.com/mine/first/etc/ets2 – loadaverage

2

indexOf을 사용해 보셨습니까?

(function(){ 
    var pathnameArr = location.pathname; 
    if (pathnameArr.indexOf('mine/first')>-1) { 
     $(".container").addClass('dontshow'); 
    } 
    if (pathnameArr.indexOf('mine/second')>-1) { 
     $(".container").addClass('dontshow'); 
    } 
}); 
+0

좋은 해결책으로, 이전의 IE (<9)에서 polyfill 없이는 작동하지 않는다는 것을 알고 있어야합니다. IE에 따라 더 이상 작동하지 않을 수도 있습니다. – cfs

+0

'array.indexOf'에만 문제가되지 않습니까? 여기에 문자열입니다 (그냥 변수 이름을 유지했습니다). – davidkonrad

+0

@davidkonrad가 맞습니다.'String.prototype.indexOf'는 제 1 판 이후로 구현되었습니다. –

0

정규 표현식을 사용합니다.

$(function() { 
    var regexp = /^\/mine\/(first|second)/; 
    if (regexp.test(location.pathname)) { 
     $(".container").addClass('dontshow'); 
    } 
}); 
+0

잡히지 않은 SyntaxError : 유효하지 않은 정규 표현식 : 누락/ – loadaverage

+0

웁스 ... 고침. –

관련 문제