2010-07-26 11 views
63

Quiero alternar entre CSS para que cuando un usuario haga clic en el botón (#user_button) se muestre el menú (#user_options) y cambie el CSS, y cuando el usuario vuelva a hacer clic vuelva a la normalidad. Hasta ahora esto es todo lo que tengo:jQuery alternar CSS?

$('#user_button').click(function() { 
    $('#user_options').toggle(); 
    $("#user_button").css({  
     borderBottomLeftRadius: '0px', 
     borderBottomRightRadius: '0px' 
    }); 
    return false; 
}); 

¿Alguien puede ayudar?

+2

¿Puedes publicar tus fragmentos de HTML/CSS? –

Respuesta

105
$('#user_button').toggle(function() { 
    $("#user_button").css({borderBottomLeftRadius: "0px"}); 
}, function() { 
    $("#user_button").css({borderBottomLeftRadius: "5px"}); 
}); 

el uso de clases en este caso sería mejor que el ajuste de la CSS directamente sin embargo, mirar a los métodos addClass y removeClass alecwh mencionados.

$('#user_button').toggle(function() { 
    $("#user_button").addClass("active"); 
}, function() { 
    $("#user_button").removeClass("active"); 
}); 
+35

Puede usar .toggleClass() para las clases http://api.jquery.com/toggleClass/ – gadelkareem

+6

Esto ya no funciona como este método fue desaprobado en jQuery 1.8 y eliminado en jQuery 1.9. Consulte http://api.jquery.com/toggle-event/ – binaryfunt

+0

Pero, ¿qué ocurre si tenemos un efecto de transición? en este caso, el efecto de transición no se aplicará, ¿verdad? –

4

Es posible que desee utilizar los comandos jQuery .addClass y .removeClass, y cree dos clases diferentes para los estados. Esto, para mí, sería la mejor forma de hacerlo.

+2

toggleClass es equivalente a estos a menos que desee eliminar una clase diferente a la que está agregando por algún motivo – Zach

1

La mejor opción sería la de establecer un estilo de clase en el CSS como .showMenu y .hideMenu con los diferentes estilos dentro. A continuación, puede hacer algo como

$("#user_button").addClass("showMenu"); 
58

me gustaría utilizar la función toggleClass en jQuery y definir el CSS para la clase, por ejemplo,

/* start of css */ 
#user_button.active { 
    border-bottom-right-radius: 5px; 
    border-bottom-left-radius: 5px; 
    -webkit-border-bottom-right-radius: 5px; /* user-agent specific */ 
    -webkit-border-bottom-left-radius: 5px; 
    -moz-border-radius-bottomright: 5px; 
    -moz-border-radius-bottomleft: 5px; /* etc... */ 
} 
/* start of js */ 
$('#user_button').click(function() { 
    $('#user_options').toggle(); 
    $(this).toggleClass('active'); 
    return false; 
}) 
+0

Esto es lo que yo también haría. Menos estilo en su JS luego –

+1

¿Por qué esta no es la respuesta? –

+0

@LeviBotelho probablemente porque estuve como 20 minutos después ... historia de mi vida ... – Ties

Cuestiones relacionadas