Li要素を含むul-listがあります。ユーザーがこれらのli要素のいずれかをクリックすると、その要素にクラスが追加されます。
これは簡単に設定できますが、他のli要素をクリックすると、「アクティブな」クラスを非アクティブなliから削除することができます。
私は問題のjsfiddleを作成しました: http://jsfiddle.net/tGW3D/
常に赤であるli要素が1つあるはずです。 2番目のボタンをクリックしてから最初のボタンをクリックすると、最初のボタンだけが赤になります。
これにより、アクティブな各liからアクティブなクラスが削除され、クリックされた要素に追加されます。
$('body').on('click', 'li', function() {
$('li.active').removeClass('active');
$(this).addClass('active');
});
siblings
およびremoveClass
メソッドを使用できます。
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
最初に.active
のすべてのインスタンスを削除してから追加します。
$('ul li').on('click', function() {
$('ul li.active').removeClass('active');
$(this).addClass('active');
});
$('li').click(function() {
$(this).siblings().removeClass('active');
$(this).addClass('active');
});
このようなもの?
兄弟関数を使用できます。 addClass は同じjqueryオブジェクト$(this)を返すため、$ this)を除く他のすべての要素を返す---(siblings メソッドをチェーンできます。
$('li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
$('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');
});
上記のコードはあなたのためのトリックを行います。 このデモを試してください
<script>
$(function() {
$('li').click(function() {
$("li.active").removeClass("active");
$(this).addClass('active');
});
});
</script>