2013-12-19 2 views
2

Я пытаюсь создать меню, в котором я хочу изменить CSS элемента li при щелчке, в то же время, CSS других литов должен оставаться прежним.Как добавить класс «Актив» при щелчке элемента li и удалить его из других одновременно?

Мое меню:

<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

Благодаря Sridhar. :) – 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(); 
}); 
Смежные вопросы