In Twitter-Bootstrap suchte ich nach einer Möglichkeit, eine Schaltfläche die Standardfarbe zu ermöglichen, wenn nicht aktiv. Sobald eine Schaltfläche aktiv ist, wollte ich die Farbe ändern. Ich suchte nach Möglichkeiten, dies mit der bereitgestellten js-Datei zu tun. Ich habe am Ende ein kleines Skript geschrieben, um damit umzugehen.Toggle Twitter Bootstrap Button-Klasse, wenn aktiv
Antwort
Durch Hinzufügen von class-toggle
als Attribut zu der Schaltfläche gleich, was Sie gehen möchten, sobald die Schaltfläche gedrückt wird und fügen Sie die folgende jQuery, erhalten Sie das oben beschriebene Ergebnis.
$('.btn-group > .btn, .btn[data-toggle="button"]').click(function() {
if($(this).attr('class-toggle') != undefined && !$(this).hasClass('disabled')){
var btnGroup = $(this).parent('.btn-group');
if(btnGroup.attr('data-toggle') == 'buttons-radio') {
btnGroup.find('.btn').each(function() {
$(this).removeClass($(this).attr('class-toggle'));
});
$(this).addClass($(this).attr('class-toggle'));
}
if(btnGroup.attr('data-toggle') == 'buttons-checkbox' || $(this).attr('data-toggle') == 'button') {
if($(this).hasClass('active')) {
$(this).removeClass($(this).attr('class-toggle'));
} else {
$(this).addClass($(this).attr('class-toggle'));
}
}
}
});
Dann würde die Schaltfläche aussieht
<button class="btn" data-toggle="button" class-toggle="btn-inverse">Single Toggle</button>
Wenn Sie es mit einer Knopfgruppe tun, wollen auch sie die gleiche Art und Weise funktionieren. Fügen Sie einfach die class-toggle
zu jeder Schaltfläche in der Gruppe hinzu.
UPDATE
I geändert und erstellt einen Kern eine bessere Antwort zu haben, wenn Sie Schaltfläche mit einer Klasse starten. Toggle Twitter Bootstrap Classes
UPDATE
ich eine Änderung vorgenommen haben, den Fehler zu beheben, wenn Sie auf einem aktiven Radiobutton klicken erscheint
ich Ihren Code bearbeitet haben. Wenn Sie in Ihrem Code auf einen aktiven Status klicken, wird alles durcheinander gebracht. Ich habe eine kleine if-Anweisung hinzugefügt, die dies verhindert. Nur ein Beitrag, wenn Sie den Fix brauchen. Gute Arbeit mit dem Code.
$('.btn-group > .btn, .btn[data-toggle="button"]').click(function() {
var buttonClasses = ['btn-primary','btn-danger','btn-warning','btn-success','btn-info','btn-inverse'];
var $this = $(this);
if ($(this).attr('class-toggle') != undefined && !$(this).hasClass('disabled')) {
var btnGroup = $this.parent('.btn-group');
var btnToggleClass = $this.attr('class-toggle');
var btnCurrentClass = $this.hasAnyClass(buttonClasses);
if(btnToggleClass!='false'&&btnToggleClass!='btn') {
if (btnGroup.attr('data-toggle') == 'buttons-radio') {
var activeButton = btnGroup.find('.btn.active');
var activeBtnClass = activeButton.hasAnyClass(buttonClasses);
activeButton.removeClass(activeBtnClass).addClass(activeButton.attr('class-toggle')).attr('class-toggle',activeBtnClass);
$this.removeClass(btnCurrentClass).addClass(btnToggleClass).attr('class-toggle',btnCurrentClass);
}
if (btnGroup.attr('data-toggle') == 'buttons-checkbox' || $this.attr('data-toggle') == 'button') {
$this.removeClass(btnCurrentClass).addClass(btnToggleClass).attr('class-toggle',btnCurrentClass);
}
}
}
});
$.fn.hasAnyClass = function(classesToCheck) {
for (var i = 0; i < classesToCheck.length; i++) {
if (this.hasClass(classesToCheck[i])) {
return classesToCheck[i];
}
}
return false;
Mit freundlichen Grüßen Ein weiterer Bootstrap-Liebhaber
Ich glaube nicht, dass jede JS wirklich notwendig ist. Ich glaube, dass dies durch rein durch CSS und data
Attribute getan werden kann.
Ja, es beinhaltet ein wenig CSS-Duplizierung, aber immer noch besser als manchmal glitchy Javascript.
- Daten hinzufügen
data-active-class
auf Schaltfläche Attribut, hinzufügen CSS benutzerdefinierte für alle Klassen (Beispiel einer für die Lesbarkeit, Farben aus bereits bestehenden Klassen „primärer“, „Erfolg“ genommen werden, und so weiter)
.btn.active[data-active-class="primary"] { color: #fff; background-color: #286090; border-color: #204d74; }
Inaktive Taste wie gewohnt übertragen wird, aktiv basierend auf data-*
Attribut wird von diesem ^^ CSS rendern.
Edit: Wenn SASS oder weniger die Farben verwenden kann/sollte bereits von Bootstrap definierten Variablen verwendet werden ... das löst das Duplizieren Problem.
@bretterer Bitte überlegen Sie, ob diese Antwort Ihre Bedürfnisse erfüllen :) – podvlada
Fehle ich etwas? Konnte das nicht in der bereitgestellten Fidel funktionieren. – Khrys
@Khrys Versucht dies auf mehreren PCs (sogar auf meinem Handy), ohne Probleme, können Sie bitte mehr Informationen über was ist falsch? Es gibt nur etwas HTML und CSS, kein Javascript, vielleicht stimmt etwas mit externen Ressourcen nicht (fehlende bootstrap.min.js und bootstrap.min.css)? – podvlada
- 1. ausblenden div wenn Bootstrap umschalten aktiv
- 2. Dropdown-Menü bootstrap aktiv
- 3. JavaScript: Toggle-Links aktiv/deaktiviert
- 4. Toggle aktiv Datum jQuery dateclicker
- 5. Twitter Bootstrap Popovers schließen, wenn neue öffnen
- 6. Twitter Bootstrap Dropdown schließt, wenn geklickt wird
- 7. Mit Toggle Buttons anstelle von Kontrollkästchen (Rails, Twitter Bootstrap, Simple_form)
- 8. Bootstrap Radio-Tasten toggle Ausgabe
- 9. Bootstrap Drop-Down-Toggle-Klasse - Hintergrundfarben ändern, wenn die Option aktiv ist
- 10. Twitter Bootstrap Akkordeon-Überschrift
- 11. Bootstrap toggle button - css wenn angeklickt
- 12. Bootstrap Modal zuerst die Registerkarte aktiv gesetzt, wenn schließen
- 13. Bootstrap Registerkarte aktiv
- 14. Bootstrap-Taste aktiv Farbwechsel
- 15. Twitter Bootstrap: Status der Bootstrap Checkbox Tasten
- 16. Bootstrap Navigation Toggle
- 17. Bootstrap 4 Toggle Button
- 18. Bootstrap Validierung | Checkbox Daten-Toggle = "Toggle"
- 19. Twitter Bootstrap Split Drop-Down
- 20. Twitter Bootstrap Dropdown funktioniert nicht
- 21. den aktuellen Tab nach dem Neuladen der Seite mit dem Bootstrap von Twitter aktiv halten?
- 22. Ändern twitter bootstrap navbar
- 23. Bootstrap Tooltip Daten-Toggle
- 24. Hintergrundfarbe einstellen, wenn aktiv
- 25. Bootstrap Karussell-Nummer aktiv Symbol
- 26. Twitter bootstrap alle ein-/ausblenden - innerhalb der Bootstrap-Registerkarten
- 27. Set aktiv Bootstrap Nav-Klasse
- 28. Bootstrap - Toggle Sidebar mit Symbolen
- 29. Tab "gezeigt" Ereignis nicht feuernd - Twitter Bootstrap
- 30. Knockout Twitter Bootstrap Popover Bindung
Danke für das Wesentliche! Wenn Sie jedoch im Fall der Optionsfelder zweimal auf dieselbe Schaltfläche klicken, wird ein Fehler angezeigt. – Kalzem
@BabyAzerty Ich habe es aktualisiert, um dies zu beheben. Siehe letztes Update oder http://jsfiddle.net/W9hUr/120/ – bretterer
Hallo Danke für diesen Beitrag. Es funktioniert jedoch nicht, wenn Sie der Schaltfläche (später im Skript) ein zweites Klickereignis zuweisen. Gibt es eine Möglichkeit, mit diesem Fall umzugehen oder muss ich die Funktion jedes Mal aufrufen, wenn ich die Klassen in einer Schaltflächengruppe/Schaltfläche wechseln lassen möchte? – mffap