2013-09-27 66 views
0

我需要添加css類到所有url的,從example.com/mine/first開始。我知道如何從根地址添加類,但我無法爲/ 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中我有「未捕獲的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

不起作用,但請注意,如果沒有使用polyfill,它將無法在舊版IE中運行(<9),它可能無法在較新的IE中運行,具體取決於你使用的doctype。 – cfs

+0

不是'array.indexOf'一個問題只?這是一個字符串(只是不停的變量名) – davidkonrad

+0

@davidkonrad是正確的'String.prototype.indexOf'一直以來的第1版實現。ECMAScript中 –

0

我會用正則表達式。

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

未捕獲的SyntaxError的:無效的正則表達式:缺少/ – loadaverage

+0

哎呦......修好了。 –

相關問題