2012-10-02 19 views
17

Ich habe eine ul-Liste, die li-Elemente enthält. Wenn der Benutzer auf eines dieser li-Elemente klickt, sollte eine Klasse zu diesem Element hinzugefügt werden.jQuery: Entfernen Sie die Klasse, wenn auf ein anderes Element geklickt wird

Dies ist einfach einzurichten, wenn jedoch auf das andere li-Element geklickt wird, möchte ich, dass die Klasse "active" aus dem nicht aktiven li entfernt wird. http://jsfiddle.net/tGW3D/

Es sollte zu jeder Zeit sein, ein Li-Element, das rot ist:

Ich habe eine jsfiddle des Problems gemacht. Wenn Sie auf den zweiten und dann auf den ersten klicken, sollte nur der erste rot sein.

Antwort

52

Dadurch wird die aktive Klasse aus jeder li entfernt, die aktiv ist und dann zum Element hinzugefügt wird, auf das geklickt wurde.

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

Danke, funktioniert gut! –

+0

@AlbinN als bitte markieren Sie die Antwort als richtig – Burimi

+0

Yup, aber musste warten –

15

können Sie siblings und removeClass Methoden.

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

http://jsfiddle.net/Lb65e/

5

Entfernen Sie einfach alle Instanzen .active zuerst, und dann hinzufügen:

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

So etwas wie das?

http://jsfiddle.net/c7ZE4/

Sie können die Geschwister-Funktion verwenden. addClass gibt das gleiche jquery-Objekt $ (this) zurück, so dass Sie die Methode siblings verketten können, die alle anderen Elemente außer $ (this) zurückgibt.

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

Ich sehe jetzt, dass ich nicht allein in diesem war: D Anyways dieses kann ein ein Zwischenlage sein. –

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

Wenn Sie wissen, JQuery Sie es wie unten Kette kann.

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

Der obige Code wird den Trick für Sie tun. Try this demo

0

Sie CSS-Klasse ändern, indem Sie diesen Code:

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

Link zu jsfiddle

+0

Danke, aber die Frage wurde seit 4 Jahren beantwortet. :) –

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

Sie können die Antwort verbessern, indem Sie erklären, was Sie tun –

Verwandte Themen