2009-11-25 81 views
0

我已經構建了一個側欄導航,當導航標題被點擊時,導航會崩潰&展開。這一切都很好。但是,如果我展開/打開其中一個導航組並點擊進入一個頁面,當新頁面加載所有導航組時再次關閉。我很樂意爲主動導航組保持打開方式。使用JQuery在加載新頁面時保持活動的子導航打開

這是我用過的摺疊/展開: (它目前設置使得只有資產淨值羣體之一將是一次打開)

/* Collapse and Expand */ 
$(".slideTitle").click(function() { 
    $(".indexListOpen").removeClass("indexListOpen").addClass("indexList"); 
    $(this).next().toggleClass("indexList").toggleClass("indexListOpen"); 
}); 

而這就是我試圖用它來保持目前的導航組當打開新的頁面加載:

/* keep current nav group open */ 
var path = location.pathname; 
$('.indexListOpen a[@href$="' + path + '"]').addClass("selected"); 
$(".selected").parent().parent().removeClass("indexList").addClass("indexListOpen"); 

不工作...所以我知道我在做大量的錯誤。 我工作的頁面位於instarservices.com/commercial

任何幫助表示讚賞!

回答

1

正如dcneiner所說,@已在最新版本的jQuery中被棄用。但看起來你的目標是一個indexListOpen,而不是全新的頁面加載。因此,要麼刪除或更改爲indexList,它應該工作

$('a[href$="' + path + '"]').addClass("selected"); 

$('.indexList a[href$="' + path + '"]').addClass("selected"); 
+0

謝謝!這工作像一個魅力! – VUELA

1

如果您使用jQuery 1.3或更新版本(點版本),則不能使用@符號調用屬性選擇器。此外,啓動斜線的存在可能會導致問題。因此,我建議這樣做:

var path = location.pathname.replace(/(^\/)/g,''); // Removes the opening slash if present 
$('.indexListOpen a[href$=' + path + ']').addClass("selected"); 

如果碰上瀏覽器的差異(在一些作品中,而不是在另一個),然後檢查三件事情:

  1. 您可能需要逃避/字符前使用它在jQuery選擇
  2. 你可能會得到在pathname不是出現在你的選擇
  3. 在大多數Windows服務器的末尾尾隨斜線,網址是不區分大小寫。您需要將.toLowerCase()添加到path = location ...聲明的末尾,並確保您的href屬性都是小寫字母。

祝您好運,如果這些建議不起作用,請嘗試發佈您的HTML導航以幫助我們進一步排除故障。

+0

巨大的幫助!非常感謝!我沒有意識到@符號已被棄用。我也會研究你的其他技巧! – VUELA

相關問題