Podczas twitter bootstrap, szukałem sposobu na to, aby przycisk był domyślnym kolorem, gdy nie jest aktywny. Gdy przycisk jest aktywny, chciałem zmienić jego kolor. Sprawdziłem, jak to zrobić z dostarczonym plikiem js. W końcu napisałem mały skrypt, żeby sobie z tym poradzić.Przełącza klasę przycisków Bootstrap, gdy jest aktywna
Odpowiedz
Dodanie class-toggle
jako atrybutu przycisku odpowiadającego temu, co chciałbyś zrobić po naciśnięciu przycisku i dodaniu następującego jQuery, otrzymasz wynik opisany powyżej.
$('.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'));
}
}
}
});
następnie przycisk będzie wyglądać
<button class="btn" data-toggle="button" class-toggle="btn-inverse">Single Toggle</button>
Jeśli chcesz zrobić z grupy przycisków jak dobrze to działa w ten sam sposób. Wystarczy dodać class-toggle
do każdego przycisku w grupie.
UPDATE
I zostały zmodyfikowane i stworzył istotę mieć lepszą odpowiedź gdy zaczyna Cię przycisku z klasą. Toggle Twitter Bootstrap Classes
UPDATE
dokonaniu zmiany, aby rozwiązać problem, który pojawia się po kliknięciu na aktywnym przyciskiem radiowym
Mam edytować kod. Jeśli klikniesz na stan aktywny w swoim kodzie, wszystkie będą się mnożyć. Dodałem trochę instrukcji if, która temu zapobiega. Tylko wkład, jeśli będziesz potrzebować poprawki. Dobra praca z kodem.
$('.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;
poważaniem Innym Bootstrap Lover
Nie sądzę, że każdy JS jest to naprawdę konieczne. Wierzę, że można to zrobić poprzez wyłącznie za pomocą CSS i data
atrybutów.
Tak, dotyczy to trochę powielania powielania CSS, ale nadal lepiej niż czasami glitchy javascript.
- Dodaj atrybut danych
data-active-class
przycisku, Dodaj niestandardowy CSS dla wszystkich klas (przykład jeden dla czytelności; kolory są pobierane z już istniejących klas „primary”, „Sukces”, i tak dalej)
.btn.active[data-active-class="primary"] { color: #fff; background-color: #286090; border-color: #204d74; }
przycisk Nieaktywny spowoduje, jak zwykle, aktywnego podstawie data-*
atrybut wyrenderuje ten ^^ CSS.
Edit: Podczas korzystania Sass lub mniej kolorów mogą/powinny być stosowane już od zmiennych zdefiniowanych przez Bootstrap ... że rozwiązuje powielanie problem.
@bretterer Zastanów się, czy ta odpowiedź zaspokoi Twoje potrzeby :) – podvlada
Czy brakuje mi czegoś? Nie można tego użyć w dostarczonym skrzypcach. – Khrys
@ Chris Próbował tego na kilku komputerach (nawet na moim telefonie), bez problemu, czy mógłbyś podać więcej informacji o tym, co jest nie tak? Jest tylko trochę html i css, nie javascript, może coś jest nie tak z zewnętrznymi zasobami (brakujące bootstrap.min.js i bootstrap.min.css)? – podvlada
- 1. qTip2 - Odśwież etykietę, gdy jest aktywna
- 2. Jquery i twitter bootstrap sprawiają, że aktywna zakładka nie działa
- 3. przełącza stan UIBUTTON gdy naciskasz, jak przełącznik
- 4. Bootstrap: dodawanie grupy przycisków do paska nawigacyjnego?
- 5. Arkusz Google - zaznacz cały wiersz, gdy komórka jest aktywna
- 6. Jak obsługiwać przycisk Wstecz, gdy aktywna jest funkcja startActivityForResult?
- 7. Dodaj klasę do przycisków dialogowych jquery
- 8. Pozioma i pionowa separacja przycisków Twitter Bootstrap
- 9. Zakładka Bootstrap - klasa aktywna nie działa przy ładowaniu stron
- 10. Zmiana rozmiaru przycisków na Twitterze-Bootstrap
- 11. Twitter Bootstrap ukryj klasę css i jQuery
- 12. Wskazówka do narzędzia bootstrap powodująca przeskakiwanie przycisków
- 13. Dlaczego Bootstrap unosi ich klasę span12
- 14. Sprawdź użycie przycisków głośności, gdy ekran jest wyłączony
- 15. jQuery przełącza CSS?
- 16. Szkielet dynamicznie przełącza szablony
- 17. Twitter Bootstrap otrzymujący stan pola wyboru grupy przycisków
- 18. Ionic2 - sprawdź, czy strona jest aktywna
- 19. Jak sprawdzić, czy sesja jest aktywna?
- 20. Ustal, czy karta przeglądarki jest aktywna? - IE?
- 21. JPA Żadna transakcja nie jest obecnie aktywna
- 22. Jak dodać klasę aktywną, gdy kliknięto określony link przy użyciu bootstrap i jquery
- 23. jQuery - Znajdź aktywna zakładka
- 24. Stylizacja przycisków Bootstrap 3.x na Twitterze Przyciski
- 25. Kilka pogrupowanych przycisków z rzędu z Twitter Bootstrap 2.x
- 26. Parametr domyślny grupy przycisków grupy Bootstrap (sprawdź atrybut) nie działa
- 27. Jak uzyskać wartość wybranego przycisku na twitter bootstrap grupy przycisków
- 28. Bootstrap: Wyrównywanie dwóch przycisków w tym samym wierszu
- 29. grupa przycisków bootstrap 3 w nagłówku panelu nie centrowania
- 30. Wyłącz rozwijana przy aktywowaniu za bootstrap gdy navbar jest zwinięty
Dzięki za treść! Jednak w przypadku przycisków opcji po dwukrotnym kliknięciu tego samego przycisku pojawia się błąd. – Kalzem
@BabyAzerty Zaktualizowałem go, aby to naprawić. zobacz ostatnią aktualizację lub http://jsfiddle.net/W9hUr/120/ – bretterer
Cześć, dziękuję za ten wpis. Jednak nie działa przypisywanie zdarzenia drugiego kliknięcia do przycisku (później w skrypcie). Czy istnieje sposób radzenia sobie z tym przypadkiem, czy też muszę wywoływać funkcję za każdym razem, gdy chcę, aby klasy były przełączane w grupie/przycisku? – mffap