2010-07-26 11 views
63

Chcę przełączać się między CSS, więc gdy użytkownik kliknie przycisk (#user_button), pokazuje menu (#user_options) i zmienia CSS, a gdy użytkownik kliknie to ponownie, wraca do normy. Do tej pory to wszystko, co mam:jQuery przełącza CSS?

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

Czy ktoś może pomóc?

+2

Czy możesz publikować swoje urywki HTML/CSS? –

Odpowiedz

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

Korzystanie zajęcia w tym przypadku byłoby lepiej niż ustawienie css bezpośrednio choć spojrzeć na metodach addClass i removeClass alecwh wymienionych.

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

Możesz użyć .toggleClass() dla klas http://api.jquery.com/toggleClass/ – gadelkareem

+6

To już nie działa ta metoda została uznana za przestarzałą w jQuery 1.8 i usunięta w jQuery 1.9. Zobacz http://api.jquery.com/toggle-event/ – binaryfunt

+0

Ale co, jeśli mamy efekt przejścia? w takim przypadku efekt przejścia nie zostanie zastosowany, prawda? –

4

Możesz użyć komend jQuery: .addClass i .removeClass i utworzyć dwie różne klasy dla stanów. To byłby dla mnie najlepszy sposób na zrobienie tego.

+2

toggleClass jest równoznaczne z tymi, chyba że chcesz usunąć inną klasę niż dodajesz z jakiegoś powodu. – Zach

1

Najlepszym rozwiązaniem byłoby ustawienie stylu klasy w CSS jak .showMenu i .hideMenu z różnych stylów wewnątrz. Następnie można zrobić coś takiego

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

chciałbym korzystać z funkcji w jQuery toggleClass i zdefiniować CSS do klasy np

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

To też bym zrobił. Mniej stylizacji w twoim JS następnie –

+1

Dlaczego to nie jest odpowiedź? –

+0

@LeviBotelho prawdopodobnie dlatego, że miałem 20 minut później ... historię mojego życia ... – Ties