2012-05-10 12 views
9

Używanie jQuery UI Mam dwa przyciski opcji: Zatwierdź/Odrzuć, które chciałbym stylizować niezależnie, więc po zaznaczeniu opcji "Zatwierdź" będą one niebieskie, a po wybraniu "Odrzuć" , to będzie czerwony:jQuery UI - zmiana kolorów przycisków

Nothing selected

Approve selected

Reject selected

Przepraszam za moją straszną czerwony przycisk makieta :-) mam nadzieję, że to daje wyobrażenie o tym, co ja jestem po. Próbowałem zmienić klasę obu przycisków/etykiet, ale to nie jest następnie odzwierciedlane w nakładce jQuery-UI.

Oto mój aktualny kod, który generuje przycisków, a także wyświetlanie kleszcza lub krzyż w zależności od wyboru:

$('.approvedToggle').buttonset(); 

$('input:radio').click(function() { 
    if($(this).val() === 'approve') { 
     $(this).parent('div').children(".tick").show(); 
     $(this).parent('div').children(".cross").hide(); 
    } else { 
     $(this).parent('div').children(".tick").hide(); 
     $(this).parent('div').children(".cross").show(); 
    } 
}); 

Każda pomoc będzie mile widziane - dzięki!

+1

Czy masz sposób, aby odróżnić dwa rodzaje przycisków? (Zrozumienie niektórych znaczników i stylów pomogłoby tutaj.) Z twojego zrzutu ekranu wygląda to tak, jakby niebieski odcień został zastosowany do '.ui-button.ui-state-active' bezpośrednio w motywie (nie jest wymagany kod), czy to właściwie tak jest? –

+0

Dziękuję, tak, to dobrze :) – Nick

+1

Czy możesz opublikować jQuery próbowałem? – j08691

Odpowiedz

21

Co należy zrobić, to zastąpić domyślnym stylem jQuery UI.

Oto co documentation stany:

Jeśli potrzebny jest głębszy poziom personalizacji, istnieje klasy widget specyficzne przywoływane w jquery.ui.button.css stylów, które mogą być modyfikowane. Te klasy są pożywne pogrubioną czcionką poniżej.

Próbka znaczniki z jQuery klas ramowych UI CSS

<button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all"> <span class="ui-button-text">Button Label</span> </button>

Więc w zasadzie, co można zrobić, to coś takiego:

HTML:

<div id="approvedToggle"> 
    <input type="radio" id="ApproveButton" name="radio" /> 
    <label id="ApproveButtonLabel" for="ApproveButton">Approve</label> 

    <input type="radio" id="RejectButton" name="radio" /> 
    <label id="RejectButtonLabel" for="RejectButton">Reject</label> 
</div>​ 


CSS(Ważne!Ta stylizacja MUSI być zadeklarowane po UI pliku CSS jQuery):

#ApproveButtonLabel.ui-state-active { background: blue; } 
#ApproveButtonLabel.ui-state-active span.ui-button-text { color: red; } 

#RejectButtonLabel.ui-state-active { background: red; } 
#RejectButtonLabel.ui-state-active span.ui-button-text { color: blue; } 


jQuery:

$('#approvedToggle').buttonset();​ 


Output:

enter image description here


See the working jsFiddle demo

+1

Jestem ciekawy; czy niestandardowe css musi zostać zadeklarowane po jquery ui? Czy klasy poprzedzone identyfikatorem, '# id.ui-state-active' nie będą miały większej wagi i automatycznie nadpisują domyślne' .ui-state-active' niezależnie od jego pozycji? – ephemeron

+4

W tym konkretnym przypadku tak. Jeśli jednak nadpisałeś aktywny stan wszystkich * przycisków *, używałbyś tylko selektora klasy, a zatem musiałby on zostać zadeklarowany po pliku css jQuery UI. Najlepszą praktyką jest zawsze uwzględnianie moich nadpisujących stylów css jQuery po pliku głównym css jQuery UI. –

+0

To jest absolutnie doskonałe, pod każdym względem - dziękuję bardzo! :-) – Nick

1

Używam tego dla jQueryUI Buttona

CSS:

button.red-button 
{ 
    background:radial-gradient(#FF0000,#660000); 
    color:white; 
    border-color:#660000; 
} 
button.red-button:hover 
{ 
    background:radial-gradient(#FF0000,#880000); 
    color:white; 
    border-color:#660000; 
} 
button.red-button:active 
{ 
    background:radial-gradient(#FF0000,#660000); 
    color:white; 
    border-color:#660000; 
} 

html:

<button class="red-button">Button</button> 

Dla ciebie przypadek może można użyć:

CSS:

input.red-button 
input.red-button:hover 
input.red-button:active 
+0

To jest świetny pomysł, jak zmienić kolor aktywnego najechania? – Mick

Powiązane problemy