2012-10-02 68 views
17

我有一個包含li元素的ul列表。當用戶點擊其中一個li元素時,應該將一個類添加到該元素中。jQuery:刪除類,如果其他元素被點擊

然而,當點擊其他li元素時,這很容易設置,我希望將「活動」類從非活動li中移除。

我已經對這一問題進行一個的jsfiddle: http://jsfiddle.net/tGW3D/

應該有一個鋰元素是紅色的在任何一個時間。如果你點擊第二個,然後第一個,只有第一個應該是紅色。

回答

52

這將刪除每個具有活動的活動類,並將添加到被單擊的元素。

$('body').on('click', 'li', function() { 
     $('li.active').removeClass('active'); 
     $(this).addClass('active'); 
}); 
+0

感謝,做工精細! –

+0

@AlbinN比請標記答案正確 – Burimi

+0

是的,但不得不等待 –

15

您可以使用siblingsremoveClass方法。

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

http://jsfiddle.net/Lb65e/

5

只是刪除的.active所有實例,然後再添加:

$('ul li').on('click', function() { 
    $('ul li.active').removeClass('active'); 
    $(this).addClass('active');  
}); 
2

像這樣的事情?

http://jsfiddle.net/c7ZE4/

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

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

我現在看到,我並不孤單在這一個:D無論如何,這可以是一個班輪。 –

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

上面的代碼將爲你做的伎倆。 Try this demo

0

您可以通過這個代碼更改CSS類:

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

鏈接jsfiddle

+0

謝謝,但問題已經回答了4年。 :) –

0
<script> 
    $(function() { 
     $('li').click(function() { 
      $("li.active").removeClass("active"); 
       $(this).addClass('active'); 
      }); 
     }); 
</script> 
+0

您可以通過提供您所做的解釋來改善答案 –

相關問題