2009-09-24 19 views
20

Chcę dodać klasę css na przyciskach okna dialogowego jquery.Dodaj klasę do przycisków dialogowych jquery

Oto mój kod:

$(document).ready(function(){ 
     $('#messageBox p').html('bla bla bla. Ok?'); 
     $('#messageBox').dialog({ 
     modal : true, 
     buttons: { 
      'Yes': function() { 
      doSomething(); 
      $(this).dialog('close'); 
      }, 
      'No': function() { 
      doAnotherThing(); 
      $(this).dialog('close'); 
      } 
     } 
     }); 
    }); 

Na przykład, chciałbym dodać „.red” klasę na mój przycisk «Tak».

Jak mogę to zrobić?

Dziękujemy!

Odpowiedz

49
buttons: [ 
      { 
       text: "Submit", 
       "class": 'submit_class_name', 
       click: function() {      
        $(this).dialog("close"); 
       } 
      }, 
      { 
       text: "Cancel", 
       click: function() { 
        $(this).dialog("close"); 
       } 
      } 
      ] 
+2

To jest najlepsza odpowiedź! Uwaga: używaj cudzysłowów wokół atrybutu klasy, na iPadzie generuje błąd (prawdopodobnie dlatego, że klasa jest słowem zarezerwowanym (kluczem)) – VDP

+0

Ten sam błąd również w IE8. Rozwiązany z '" class "' zamiast 'class' –

1

Czy wypróbowałeś funkcję addClass?

+0

ale gdzie dodać tę funkcję addClass? – rahul

+0

sama odpowiedź jak phoenix ... Gdzie mogę umieścić funkcję addClass, ponieważ przyciski są tworzone przez okno dialogowe jquery, a przyciski nie mają identyfikatorów. – nicosomb

-4

.addClass funkcjonować  

+0

tak, znam tę funkcję ... ale nie wiem jak tego użyć w moim przypadku. – nicosomb

5

Jest dialogClass opcja funkcji dialogowe można wykorzystać, aby określić klasę css dla samego dialogu. Możesz nadać mu unikalną nazwę klasy i użyć tej nazwy klasy, aby uzyskać odniesienie do wszystkich elementów podrzędnych w oknie dialogowym. Następnie użyj selektorów, aby uzyskać odniesienie do przycisków podrzędnych według pozycji lub tekstu, który zawiera (prawdopodobnie bardziej wydajne użycie tego pierwszego).

7

Mam rozwiązanie, dzięki Rich:

$(document).ready(function(){ 
     $('#messageBox p').html('bla bla bla. Ok?'); 
     $('#messageBox').dialog({ 
     modal : true, 
     dialogClass: 'dialogButtons', 
     buttons: { 
      'Yes': function() { 
       doSomething(); 
       $(this).dialog('close'); 
      }, 
      'No': function() { 
       doAnotherThing(); 
       $(this).dialog('close'); 
      } 
     } 
     }); 
    }); 
$("div.dialogButtons div button:nth-child(1)").addClass("oneCssClass"); 
$("div.dialogButtons div button:nth-child(2)").addClass("anotherCssClass"); 

rozwiązany!

+1

Uratowałem mój dzień! :) Dzięki –

1

Miał ten sam problem. Bardzo podobny do rozwiązania Nico, ale dodać stylizacji do otwartego funkcji w oknie dialogowym:

open: function() { 
       // add style to buttons (can't seem to do this via the button definition without breaking IE) 
       $(".someDialog .ui-dialog-buttonset button:first").not(".buttonPrimary").addClass("buttonPrimary"); 
       $(".someDialog .ui-dialog-buttonset button:last").not(".buttonSecondary").addClass("buttonSecondary"); 
       $("#someDialog").focus(); 
      } 
Powiązane problemy