2015-12-27 46 views
0

我正在使用asp.net 4.0與bootstrap3。我在我的母版頁中使用了導航欄,並且我嘗試使用此jQuery代碼使當前菜單處於活動狀態。 下面是代碼將導航欄當前菜單設爲活動

$('.nav li a').click(function (e) { 
 
      
 
      var $this = $(this); 
 
      if (!$this.hasClass('active')) { 
 
       $this.addClass('active'); 
 
      } 
 
      
 
     });

這個工作正常,但噹噹前菜單頁面加載它變得無效。 如何爲當前菜單設置活動?

+0

你當你的頁面加載它變爲非活動狀態在說什麼?您的腳本是否在佈局頁面上加載。即所有頁面上通用的腳本。當加載當前頁面時,它會在新頁面中打開嗎?讓我知道,如果我沒有意義。 –

+0

向我們展示如何加載您的網頁? –

+0

@Vikash,你有嘗試過的建議嗎?如果他們不工作,請讓我們知道,以便人們可以改善他們的帖子,如果其中一個答案幫助你以某種方式投了贊成票,並且如果答案解決了你的問題,那麼這個帖子就是答案。這就是社區在StackOverflow上的行爲。順便說一句,當你「標記爲答案」時,你會獲得聲望。 –

回答

0

另一種方式(更復雜的)是:

首先,你的母版頁的設計(導航欄):

<li id="liContacts" runat="server"> 
    <a href="Contact.aspx">Contacts</a> 
</li> 

母版頁後面的代碼:

public String linkContacts 
{ 
    get 
    { 
     return "not_active"; 
    } 
    set 
    { 
     liContacts.Attributes.Add("class", "" + value + ""); 
    } 
} 

添加以下代碼到你的內容頁面的標題:

<%@ MasterType VirtualPath="~/MasterPage.master" %> <!-- change path to your master page //--> 

內容頁面的代碼背後:

this.Master.linkContacts = "active"; 
+0

謝謝Khazratbek,您的解決方案爲我工作。 – Vikash

+0

@Vikash不客氣 – Khazratbek

0

您設置CSS類的元素,然後重新加載該頁面,因此,更改將丟失在那裏。一個來完成你想要做的方法就是加入這個js代碼到您的主網頁(你的情況定製選擇):

$(document).ready(function() { 
    $('#main-navbar .nav a[href="' + this.location.pathname + '"]').parent().addClass('active'); 
}); 
+0

итытутсидишь?)) – Khazratbek