En twitter bootstrap, estaba buscando la manera de permitir que un botón sea el color predeterminado cuando no esté activo. Una vez que un botón está activo, quería cambiar el color. Miré formas de hacerlo con el archivo js que se proporcionó. Terminé escribiendo un pequeño script para manejar esto.Alternar la clase de botón Twitter Bootstrap cuando está activo
Respuesta
Al agregar class-toggle
como un atributo al botón que equivale a lo que le gustaría ir una vez que se presiona el botón y se agrega el siguiente jQuery, obtendrá el resultado descrito anteriormente.
$('.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'));
}
}
}
});
A continuación, el botón se vería
<button class="btn" data-toggle="button" class-toggle="btn-inverse">Single Toggle</button>
Si quiere hacerlo con un grupo de botones, así que funciona de la misma manera. Simplemente agregue el class-toggle
a cada botón del grupo.
ACTUALIZACIÓN
he modificado y ha creado una esencia para tener una mejor respuesta cuando a partir botón con una clase. Toggle Twitter Bootstrap Classes
ACTUALIZACIÓN
he hecho un cambio para corregir el error que aparece cuando se hace clic en un botón de radio activa
He editado su código. Si hace clic en un estado activo en su código, todo se arruina. He agregado una pequeña declaración if que evita esto. Solo una contribución si necesitas la solución. Buen trabajo con el código.
$('.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;
Sinceramente Otra Bootstrap amante
no creo, que cualquier JS es realmente necesario. Creo que esto se puede hacer puramente por CSS y data
atributos.
Sí, implica un poco de duplicación de CSS, pero aún mejor que a veces glitchy javascript.
- Añadir datos de atributos
data-active-class
al botón, Añadir CSS personalizado para todas las clases (ejemplo de uno para facilitar la lectura, los colores son tomados de las clases ya existentes "primaria", "éxito", y así sucesivamente)
.btn.active[data-active-class="primary"] { color: #fff; background-color: #286090; border-color: #204d74; }
botón inactivo hará que, como de costumbre, activo basado en data-*
atributo será renderizado por este ^^ CSS.
Editar: Al utilizar SASS o menos los colores pueden/deben ser utilizadas a partir de variables ya definidas por Bootstrap ... se soluciona el problema duplicar.
@bretterer Considera si esta respuesta satisface tus necesidades :) – podvlada
¿Me falta algo? No pude hacer que esto funcione en el violín provisto. – Khrys
@Khrys Probé esto en varias PC (incluso en mi teléfono), sin ningún problema, ¿podría proporcionar más información de lo que está mal? Solo hay algunos html y css, ningún javascript, tal vez hay algún problema con los recursos externos (¿falta los archivos bootstrap.min.js y bootstrap.min.css)? – podvlada
- 1. Twitter Bootstrap: Eliminar/Alternar el estado activo del grupo de botones con forma de casilla de verificación
- 2. Botón Twitter Bootstrap js no funciona
- 3. Rieles con Twitter Bootstrap: sigue sirviendo a un activo antiguo
- 4. ¿Cómo manejo el botón Atrás cuando startActivityForResult está activo?
- 5. Cómo personalizar el botón Airplay cuando Airplay está activo
- 6. Uso de la clase de utilidad receptiva de Twitter Bootstrap
- 7. Twitter Bootstrap FileUpload
- 8. Twitter Bootstrap clase ".container": ¿cómo usarlo semánticamente?
- 9. ¿Está bien implementar Modernizr con Twitter Bootstrap?
- 10. Tooltips con Twitter Bootstrap
- 11. Twitter bootstrap accordion-heading
- 12. tratando de implementar un botón 'siguiente' usando twitter bootstrap-tabs.js
- 13. ¿Twitter Bootstrap incluye jQuery?
- 14. Twitter bootstrap muestra el botón con texto gris
- 15. Twitter Bootstrap hide css class y jQuery
- 16. Twitter bootstrap + asp.net masterpages, ¿cómo configurar el elemento de la barra de navegación como activo cuando el usuario lo selecciona?
- 17. Ventana flotante modal Twitter Bootstrap
- 18. Twitter bootstrap .popover no funciona
- 19. Twitter Bootstrap Carrusel no deslizante
- 20. Twitter menú desplegable Bootstrap
- 21. Twitter bootstrap: agregar una clase al título abierto del acordeón
- 22. Cambiar estilo btn-group .active en Twitter Bootstrap
- 23. Twitter bootstrap, botones al estilo hover?
- 24. Twitter Bootstrap Modal - IsShown
- 25. Symfony2 y Twitter Bootstrap
- 26. Plone y Twitter Bootstrap
- 27. Splitter para Twitter Bootstrap
- 28. Twitter Bootstrap sidet caret
- 29. Twitter Bootstrap Containers
- 30. Ember.js con Twitter Bootstrap Modal
¡Gracias por la esencia! Sin embargo, en el caso de los botones de radio, cuando hace clic dos veces en el mismo botón, aparece un error. – Kalzem
@BabyAzerty Lo he actualizado para solucionarlo. ver la última actualización o http://jsfiddle.net/W9hUr/120/ – bretterer
Hola gracias por esta publicación. Sin embargo, no funciona asignar un segundo evento de clic al botón (más adelante en el script). ¿Existe una forma adecuada de manejar este caso o tengo que llamar a la función cada vez que quiero que las clases cambien en un botón/grupo de botones? – mffap