2011-02-10 42 views
4

我有一個菜單,但我想突出顯示當前與jquery的鏈接。突出顯示目前的網址在菜單ith jquery

var loc = window.location; 
    var lochref = $("#topNavigation li a").attr("href"); 

    if(lochref == loc){ 
     $('#topNavigation li a').addClass('currenthover'); 
    } 

使用上面的腳本,「a」類沒有任何變化。我如何用jQuery來做到這一點? 在此先感謝

回答

3

第一關:這是你應該考慮做服務器端。它更簡單,更可靠。

您的代碼僅比較第一個鏈接的href,因爲attr返回第一個鏈接的屬性值。你需要循環鏈接找到正確的。

var loc = window.location.href; 
$("#topNavigation li a").each(function() { 
    if(this.href == loc) { 
    $(this).addClass('currenthover'); 
    } 
}); 
1

我要麼在控制檯中記錄loc和lochref,要麼做一個警報,看看這些值是什麼,它可能就像丟失一個尾部斜線一樣簡單。除此之外,代碼是有效的。

http://jsfiddle.net/loktar/gjZVK/3/

命中運行和第二警報應該匹配,並且鏈接會變成紅色。

0

您錯過了.href關閉了window.location對象。您需要更改的第一行:

var loc = window.location.href 
+0

我發現這個在1分鐘內使用firebug並在javascript中做一個「console.log(window.location)」,就像Loktar說的那樣。使用像螢火蟲這樣的工具使開發和調試代碼變得更容易。 – Neil 2011-02-10 16:00:54

1

我一直使用jQuery來突出顯示當前菜單項。試試這個:

$(function() { 
    var loc = window.location; 
    var pathName = loc.pathname.substring(loc.pathname.lastIndexOf('/') + 1); 
    $('[href$="' + pathName+ '"]').parent().addClass("active"); 
});