2010-07-26 8 views
63

Voglio passare da CSS in modo che quando un utente fa clic sul pulsante (#user_button) mostra il menu (#user_options) e modifica il CSS e quando l'utente fa clic nuovamente, torna alla normalità. Finora questo è tutto ciò che ho:jQuery attiva/disattiva CSS?

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

Qualcuno può aiutare?

+2

Puoi pubblicare i tuoi snippet HTML/CSS? –

risposta

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

utilizzando le classi in questo caso sarebbe meglio che l'impostazione del CSS direttamente, però, guardare ai metodi addClass e removeClass alecwh menzionati.

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

È possibile utilizzare .toggleClass() per le classi http://api.jquery.com/toggleClass/ – gadelkareem

+6

Questo non funziona più come questo metodo è stato deprecato in jQuery 1.8 e rimosso in jQuery 1.9. Vedi http://api.jquery.com/toggle-event/ – binaryfunt

+0

Ma cosa succede se abbiamo un effetto di transizione? in questo caso l'effetto di transizione non verrà applicato, giusto? –

4

È possibile utilizzare i comandi .addClass e .removeClass di jQuery e creare due classi diverse per gli stati. Questo, per me, sarebbe il modo migliore per farlo.

+2

toggleClass è equivalente a questi a meno che non si desideri rimuovere una classe diversa da quella che si sta aggiungendo per qualche motivo – Zach

1

L'opzione migliore sarebbe quella di impostare uno stile di classe in CSS come .showMenu e .hideMenu con i vari stili all'interno. Poi si può fare qualcosa di simile

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

vorrei utilizzare la funzione toggleClass in jQuery e definire il CSS per la classe di esempio

/* 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

Questo è quello che farei anch'io. Meno styling nel tuo JS quindi –

+1

Perché questa non è la risposta? –

+0

@LeviBotelho probabilmente perché sono stato come 20 minuti dopo ... storia della mia vita ... – Ties