如何在单击li元素时添加“Active”类并同时从其他元素中删除它?

6

我希望创建一个菜单,在用户点击其中一个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。是否有任何方法可以实现这一点?


请查看此链接:http://stackoverflow.com/questions/16327080/using-jquery-to-add-class-based-on-url - Vijayakumar Selvaraj
6个回答

21

试一下

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

    });

演示


@AppleBud 很高兴能帮助你 :-) - Sridhar R

7

试试这个

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

DEMO


4

试试这个,这永远都会起作用

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

1
你可以针对.siblings()进行定位。
$("#menu li a").click(function() {
    $(this).parent().addClass('selected').siblings().removeClass('selected');
});

1

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');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接