Ich habe 2 Tasten, klicken Sie auf eine wird Klassen für beide Tasten tauschen.
Die Klassen sind selected
und unselected
.Mit jQuery zum Entfernen und Hinzufügen von Klassen zu Schaltflächen, die neue Klasse hinzugefügt wird nicht funktionieren mit der Klick-Funktion
Mein CodePen:
http://codepen.io/leongaban/pen/iLBvs
Zum Beispiel: Klicken Sie auf die Schaltfläche Login entfernen wird es nicht ausgewählte Klasse ist und ihm seine ausgewählte Klasse geben und dem Register, um in dem nicht ausgewählte Klasse geben.
Jetzt ist das Problem, dass die register_unselected
Klasse nicht funktioniert. Die unselected
Klassen sind diejenigen, die Klicks Aktionen in meinem jQuery haben.
Ich sollte in der Lage sein, auf den grauen Knopf zu klicken und ihn blau zu drehen. Nach dem Klicken auf die erste graue Schaltfläche (Login) funktioniert das neue graue Tastenregister jedoch nicht.
Mit dem Inspektor von Chrome kann ich deutlich sehen, dass meine Klasse register_unselected hinzugefügt wurde, aber die Klickfunktion funktioniert nicht.
Irgendwelche Ideen? Wie würdest du das angehen?
// Login Tab (default : first)
$(".login_unselected").click(function(){
console.log('clicked login');
// Show Login Tab as selected
$(this)
.removeClass('login_unselected')
.addClass('login_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_register')
.removeClass('register_selected')
.addClass('register_unselected');
});
// Register Tab
$(".register_unselected").click(function(){
console.log('clicked register');
// Show Login Tab as selected
$(this)
.removeClass('register_unselected')
.addClass('register_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_login')
.removeClass('login_selected')
.addClass('login_unselected');
});
zwei Wörter: 'event delegation', das click -Ereignis sucht nicht nach Elementen, die diese Klasse erhalten, wenn es bindet, nur Elemente, die beim Laden der Seite mit dieser Klasse existieren. Die schnelle Lösung ist '$ (document) .on ('click', 'class', function() {// normaler Code});' beim Ersetzen von 'document' durch ein statisches Element, das sich nicht ändert. – Ohgodwhy
Danke für den Tipp! : D –
@Leon sehen meine derzeit nicht gefundene Lösung, verwenden Sie weniger als die Hälfte der Menge an Code, den Sie gerade verwenden. Keine Notwendigkeit dafür. – Dom