2012-09-26 57 views
1

我新手階級jQuery中,我有這樣的HTML代碼菜單:jQuery的添加和刪除菜單

<nav> 
    <ul class="navtab"> 
     <li class='home selected'><a href='index.php'>Home</a></li> 
     <li class='about'><a href='company.php'>About</a></li> 
    </ul> 
</nav> 

這是jQuery代碼:

$(".navtab li.about").click(function(){ 
    $('.navtab li.home').removeClass('selected'); 
    $('.navtab li.about').addClass('selected'); 
}); 

,這我的CSS:

nav ul.navtab li.selected a{ 
    color: #fff; 
    background-color: #575757; 
} 

當選擇了頁面加載標籤回家。當我點擊關於選項卡時,我想刪除在選項卡主頁上選擇的類,並添加關於選項卡選擇的類。哪裏有問題??

在此先感謝。法比奧

+1

_Which_問題? – moonwave99

+0

您的代碼正常工作您的問題是什麼? – Afshin

+0

你在'$(function(){...})中包裝了你的jQuery嗎? – iambriansreed

回答

3

使用removeClass('home.selected')代替removeClass('selected');$('.navtab li.home')$('.navtab li.home.selected')

Live Demo

$("nav li.about").click(function(){ 
    $('nav li.home.selected').removeClass('home selected');  
    $('nav li.about').addClass('selected'); 
}); 
+0

這將如何幫助? –

+0

我調整了我的答案,並添加了一個現場演示鏈接 – Adil

+0

檢查這個小提琴... http://jsfiddle.net/sushanth009/KuES6/2/ –

0

如果你想突出選定的部分,你必須做服務器端。

如果您在點擊鏈接時遇到類客戶端,頁面將被重新載入,並且jQuery回調將不起作用。

1

如果你是加載在客戶端頁面做到這一點,而不是:

$(function(){ 

    $(".navtab>li").click(function(){ 
     $(this).addClass('selected').siblings().removeClass('selected'); 
    }); 

}); 

點擊任何列表項時,該工作。

如果您要在服務器端加載新頁面,則需要設置所選的類服務器端。

+0

感謝您的回覆,但這個解決方案不起作用或peraphs我不明白! – fabiokz

+0

@Fabio後者。 – iambriansreed

+0

用於啓發我的.siblings(),+1,很有用。 PS fabio,是的,它的工作原理,是一個更好的解決方案,因爲你可以使用,如果你有儘可能多的標籤,並與一條線。 – HdN8

0

您可以使用「數據類型=‘’」屬性或只使用一個名稱屬性來管理這個菜單的開啓狀態:

<nav> 
<ul class="navtab"> 
<li class='home selected' id="homepage" name="nav_item"><a href='#'>Home</a></li> 
<li class='about' id="company" name="nav_item"><a href='#'>About</a></li> 
</ul> 
</nav>​ 

然後這裏是jQuery的:

$("[name='nav_item']").click(function(){ 
$("[name='nav_item']").removeClass('selected'); 
$(this).addClass('selected'); 
});​ 

jQuery的刪除「選擇」類的所有實例被點擊一個導航項目時,然後添加「選擇」類被點擊的鏈接。讓我知道這是否會爲你工作...我做了一個jsFiddle它here

如果您願意,您可以使用其他事物的ID。這看起來像是一種更高效/更乾淨的方式。

這將工作,只要你不刷新頁面...否則用你的後端代碼(PHP,JSP等)來管理開啓狀態。

PHP例子:

<?php 
if (isset($_GET['page']) && $_GET['page'] == 'homepage'){ 
    $selected_link = 'class="selected"'; //set the class if page is homepage 
} else $selected_link = ''; //empty, will not throw and error 
?> 

然後你的鏈接:

<li class='home' id="homepage" <?php echo $selected_link;?>> 
+1

當我點擊關於選項卡有一個頁面刷新,所以我只解決了使用您在最後的消息中建議的php代碼。我想用jquery解決....謝謝! – fabiokz

+0

@Fabio - 如果這是您選擇的答案,請投票或點擊「接受答案」 – timpng1