2017-12-02 84 views
0

我正在嘗試創建一個代碼片段,當您導航到該頁面時,它將爲頁面添加一個活動類。我過去曾經用過ID,它工作正常,但我現在需要類,所以我可以使用Bootstrap功能。你如何抓住一個類並在jquery中添加另一個類?

var mybodyid = $('body').attr('id'); 
var mynavid = '#nav' + mybodyid; 
$(mynavid).attr('id', 'active'); 

我試過改變一切從'id'到類和#nav到.nav,但沒有運氣。我猜我會改變最後一行:

$(mynavid).addClass('active'); 

,但不知道如何處理線1做和2

HTML:

<html> 
    <body id="home"> 
    <nav id="navhome"> 
    </body> 
</html> 

的工作代碼將增加除了navhome之外還有一個「有效」的ID。我需要將所有轉換爲類而不是ID。我的意思是我知道我需要將所有的HTML id轉換爲類。我只是無法讓JS添加活動類。

+0

請添加您的HTML。 –

+0

https://jsfiddle.net/oqhp4b38/ - 很難看到你有什麼問題?你爲什麼需要對ID做任何事情?除非你還沒有顯示更多的HTML。 – ADyson

+0

我不認爲我很好地解釋自己。我想要做的是添加一個活動的類到我的導航,所以它改變導航樣式。我想要在導航到頁面時動態添加課程。我的問題是我知道如何用jQuery中的ID做到這一點,但我不能使用類來使它工作。因爲我處於引導階段,所以我需要它成爲一門課程,否則我會使用我已有的課程。那有意義嗎? – megler

回答

0

由於IDS應該是獨一無二的,世界上沒有必要將其範圍,以身體。另外,不要重新分配ID。使用.addClass

0

嘗試使用.toggleClass()如果您想要在類和.addClass()之間切換,如果您只想添加類。

比方說,我有一個<nav>有一個ID my-nav

<nav id="my-nav"> 
<ul> 
<li>menu 1 </li> 
<li>menu 2</li> 
<li>menu 3</li> 
</ul> 
</nav> 

,我想,當我點擊一個按鈕,導航應該有一流的.active

$("#my-nav").toggleClass('active'); 

的上述變化

<nav id="my-nav" class="active"> 
    <ul> 
    <li>menu 1 </li> 
    <li>menu 2</li> 
    <li>menu 3</li> 
    </ul> 
    </nav> 

當我點擊t他按鈕再次應該上述去除將更改爲

<nav id="my-nav"> 
<ul> 
<li>menu 1 </li> 
<li>menu 2</li> 
<li>menu 3</li> 
</ul> 
</nav> 

,或者如果我只想補充類它

$("#my-nav").addClass('active'); 
0

我要對此完全錯誤的方式,並試圖迫使不正確代碼到我的解決方案。這是我想要做的:

當一個頁面加載時,我希望我的代碼知道我在哪個頁面上,並向該頁面的導航鏈接添加一個CSS「active」類,這樣我就可以以某種方式用戶知道他們在網站上的位置。

我知道如何用CSS ID做到這一點,但不能用類。以下是如何做到這一點:

HTML - 注意,鏈接是相對的,不是絕對的:

<nav> 
    <ul> 
    <li><a href="home.html">Home</a></li> 
    <li><a href="contact.html">Contact</a></li> 
    <li><a href="about.html">About</a></li> 
    </ul> 
</nav> 

的Jquery:

function(){ 
// set active link in nav 
// credit: https://www.johnmorrisonline.com/add-active-navigation-class-to-menu-item-based-on-url-using-jquery/ 
// Get current path and find target link 
var path = window.location.pathname.split("/").pop(); 

// Account for home page with empty path 
if (path == '') { 
    path = 'index.php'; 
} 
var target = $('nav a[href="' + path + '"]'); 
// Add active class to target link 
target.addClass('active');  
} 

我敢肯定有一種方法,使其與工作一個絕對的URL,但這個工程。

相關問題