17

我有一个包含 li 元素的 ul 列表。当用户单击这些 li 元素之一时,应将一个类添加到该元素。

这很容易设置,但是,当单击另一个 li 元素时,我希望从非活动 li 中删除“活动”类。

我已经解决了这个问题:http: //jsfiddle.net/tGW3D/

任何时候都应该有一个红色的锂元素。如果单击第二个然后单击第一个,则只有第一个应该是红色的。

4

10 回答 10

52

这将从每个具有活动的 li 中删除活动类,然后将其添加到单击的元素中。

$('body').on('click', 'li', function() {
      $('li.active').removeClass('active');
      $(this).addClass('active');
});
于 2012-10-02T08:46:36.253 回答
22

你可以使用siblingsremoveClass方法。

$('li').click(function() {
    $(this).addClass('active').siblings().removeClass('active');
});

http://jsfiddle.net/Lb65e/

于 2012-10-02T08:46:53.087 回答
5

只需删除 first 的所有实例.active,然后添加它:

$('ul li').on('click', function() {  
    $('ul li.active').removeClass('active');
    $(this).addClass('active');    
});
于 2012-10-02T08:47:16.300 回答
2
$('li').click(function() {
  $(this).siblings().removeClass('active');
  $(this).addClass('active');
});

检查:http: //jsfiddle.net/tGW3D/2/

于 2012-10-02T08:47:27.083 回答
2

像这样的东西?

http://jsfiddle.net/c7ZE4/

您可以使用兄弟姐妹功能。addClass返回相同的 jquery 对象 $(this),因此您可以链接兄弟方法,该方法返回除 $(this) 之外的所有其他元素。

 $('li').click(function() {
  $(this).addClass('active').siblings().removeClass('active');
 });
于 2012-10-02T08:48:05.413 回答
1
 $('li').click(function() {
      $(this).addClass('active'); // add the class to the element that's clicked.
      $(this).siblings().removeClass('active'); // remove the class from siblings. 
});

如果你知道 jquery,你可以像下面这样链接它。

 $('li').click(function() {
      $(this).addClass('active').siblings().removeClass('active'); 
});

上面的代码将为您解决问题。试试这个演示

于 2012-10-02T08:50:31.130 回答
0
<script>
    $(function() {
        $('li').click(function() {
            $("li.active").removeClass("active");
                $(this).addClass('active');
            });
        });
</script>
于 2017-02-24T13:17:43.993 回答
0
  $(document).on('click','ul li',function() {
        $(this).addClass('active').siblings().removeClass('active');
    });

此 jquery 代码可能会有所帮助。不要忘记添加Jquery CDN

于 2020-05-28T12:49:14.877 回答
0

您可以使用以下代码:

$('document').on('click', 'ul li', function() {
    $(this).addClass('active').siblings().removeClass("active") ;
});
于 2021-02-11T23:12:50.483 回答
-1

您可以通过以下代码更改 css 类:

$('li').click(function() {
    $(this).addClass('active').siblings().removeClass('active'); 
});

链接到jsfiddle

于 2016-01-27T14:51:04.907 回答