2013-03-11 74 views
0

我正在使用Ruby on Rails來開發應用程序。我已經爲我的頁面添加了一組鏈接(使用偏分量),當有人訪問某個頁面時,我想添加一個類active使用jquery添加類如果已知的URL與Ruby on Rails

所以,如果我有這樣的聯繫:(這是包含在所有的頁面,使頁面更清潔)

<ul> 
<li><a href="profile">Profile</a></li> 
<li><a href="profile/users">Users</a></li> 
</ul> 

我有jQuery的:

var loc = window.location.pathname; 
var href = ?? 
if(loc == href){ 
var thisli = $('href').parents('li'); 
$(this).addClass('active'); 
} 

我還在思考如何我會做這樣的事嗎?除非有另一種方式?我習慣於使用PHP,因此我不熟悉rails是否有其他更簡單的方法將活動類添加到某人正在訪問的鏈接。

謝謝!

+0

您的jQuery的似乎全亂了。 $('href')應該是,我假設,$('a');.和你期待$(這)是什麼?從顯示的代碼看來,它可能是全球範圍(窗口) – kennypu 2013-03-11 03:42:21

回答

2

您可以嘗試

$(function(){ 
    $('a[href="' + window.location.pathname + '"]').closest('li').addClass('active'); 
}) 
+0

天才!正是我正在尋找的!謝謝! – hellomello 2013-03-11 03:54:42

0

使用Javascript/jQuery的,您可以查看當前的URL路徑,用window.location.pathname和比較,與鏈接。使用a元素,您可以比較絕對URL。我們不得不做一些額外的工作。基本思想是創建另一個[hidden] a元素,將該元素的href設置爲測試URL,然後查看它們的兩個結果絕對URL是否匹配。

所以第一:

function compareURLs(url1, url2) { 
    var testElement = $('<a href=""></a>'), 
     result1, result2; 
    testElement.attr('href', url1); 
    result1 = testElement.get(0).href; 
    testElement.attr('href', url2); 
    result2 = testElement.get(0).href; 
    return result1 == result2; 
} 

然後檢查每個a元素:

var path = window.locaion.pathname; 
$('ul a').each(function() { 
    if (compareURLs(path, $(this).attr('href')) { 
     $(this).addClass('active'); 
    } 
}