2016-11-30 4 views
0

Ich habe den folgenden Code in HTML. Ich möchte nur aktive Klasse entfernen, wenn wir auf andere li klicken und aktive Klasse zu li hinzufügen, auf die geklickt wird.Entfernen von Klassenattribut von li auf Klick

<ul class="pagination" id="paginationUL"> 
    <li class="active"><a href="#">1</a></li> 
    <li onclick="javascript:selectThis()"><a href="#">2</a></li> 

Ich habe versucht, die Klasse zuerst und es funktioniert nicht zu entfernen. Bitte vorschlagen.

function selectThis() { 
    $('ul[class="pagination"] li[class="active"]').removeClass("active")); 
} 

das Skript Herausgegeben und es funktioniert.

Antwort

0

Sie können eine Zeile schreiben, um alle li Elemente in diesem Menü zu binden. Der Selektor $(this) wirkt gegen das angeklickte Element, während .siblings() auf alle anderen untergeordneten li Elemente wirkt.

$('#paginationUL > li').click(function(){ 
 
    $(this).addClass('active').siblings().removeClass('active') 
 
})
.active { background: orange; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="pagination" id="paginationUL"> 
 
    <li class="active"><a href="#">1</a></li> 
 
    <li><a href="#">2</a></li> 
 
    <li><a href="#">3</a></li> 
 
</ul>

+0

Danke @jmcgriz. –

+0

Willkommen, fröhliche Programmierung. – jmcgriz

+0

Ich bin mir nicht sicher, ob ich eine andere Frage stellen kann, die hier etwas damit zu tun hat. Wie erhält man den Wert der aktuellen aktiven li, bevor wir die Klasse entfernen oder hinzufügen? Ich habe es so versucht. $ (this) .siblings(). find ('[class = "active"]'). first(). val() und $ (this) .siblings(). find ('[class = "active"]') .val() und $ (this) .siblings(). find ("active"). val(), alles sagt undefiniert. –

1

Ihre Auswahl ist nicht korrekt. Verwenden Sie #paginationUL[class="pagination"] li[class="active"] oder ul.pagination li.active oder #paginationUL li.active

+0

Warum '#paginationUL [class = "Paginierung"] li [class = "aktiv"]' statt '#paginationUL li.active' – j08691

+1

Warum für eine Klasse plagen Angabe' # PaginierungUL'? Per definitionem sollte es nur eine davon geben. – BenM

2

Ihre Selektoren sind falsch. Sie müssen die ID (#) oder Klasse (.) Selektor verwenden:

$('#paginationUL li.active').removeClass("active"); 

aber du bist besser dran nicht aufdringlich Ereignishandler verwenden und eher entlang der Linien der folgenden, etwas zu tun:

$('#paginationUL > li').on('click', function() { 
    $(this).addClass('active').siblings('.active').removeClass('active'); 
}); 

Das letzte Beispiel wendet eine Klasse von active auf das angeklickte Element an und entfernt es von anderen Elementen in <ul>.

+0

Danke BenM. Das hat auch funktioniert. –

1

Sie können so etwas wie dieses

$("#paginationUL li").click(function() { 
    $(this).toggleClass("active"); 
    $(this).siblings().removeClass("active"); 
}); 
1

verwenden Wenn Sie jQuery verwenden sollte es tun:

$('#paginationUL li').click(function(){ 
    $('#paginationUL li').removeClass("active"); 
    $(this).addClass('active'); 
}); 
Verwandte Themen