2013-12-19 109 views
2

我試圖創建一個菜單,我想在點擊時改變li元素的CSS,同時其他li的CSS應該保持不變。如何在單擊李元素時添加「活動」類並同時將其從其他元素中移除?

我的菜單是:

<ul id="menu"> 
    <li><a href="#">Parent 1</a> </li> 
    <li><a href="#">item 1</a></li> 
    <li><a href="#">non-link item</a></li> 
    <li><a href="#">Parent 2</a> </li> 
</ul> 

和我的jQuery添加CSS到選定的元素是:

$("#menu li a").click(function() { 
    $(this).parent().addClass('selected'); 

    }); 

但是,現在,我無法從非刪除已添加CSS選定的元素。無論如何,我可以執行此操作嗎?

+0

入住這http://stackoverflow.com/questions/16327080/using-jquery-to-add-class-based-on-url –

回答

10

試試這個

$("#menu li a").click(function() { 
    $(this).parent().addClass('selected').siblings().removeClass('selected'); 

    }); 

DEMO

+0

感謝斯里達爾。 :) – AppleBud

+0

@ AppleBud高興地幫助你:-) –

0
$("#menu li a").click(function(){ 
    // Remove active if this does not have active class 
    if(!($(this).closest("li").hasClass("active"))){ 
     $(this).closest("#menu").find("li.active").removeClass('selected'); 
    } 
    $(this).closest("li").addClass('selected'); 
}); 
1

您可以定位.siblings()

$("#menu li a").click(function() { 
    $(this).parent().addClass('selected').siblings().removeClass('selected'); 
}); 
6

試試這個

$("#menu li a").click(function() { 
    $("#menu li").removeClass('selected'); 
    $(this).parent().addClass('selected'); 
}); 

DEMO

+0

謝謝...它工作得很好。 :) – AppleBud

1

試試這個,這將始終工作

$("#menu li a").on('click', function(e){ 
    $("#menu .active").removeClass('active'); 
    $(this).parent().addClass('active'); 
    e.preventDefault(); 
}); 
相關問題