2009-09-24 12 views
20

Desidero aggiungere la classe css sui pulsanti di una finestra di dialogo jquery.Aggiungi classe ai pulsanti di dialogo jquery

Ecco il mio codice:

$(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'); 
      } 
     } 
     }); 
    }); 

Per esempio, vorrei aggiungere classe ".red" sul mio pulsante 'Sì'.

Come posso farlo?

Grazie!

risposta

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

Questa è la migliore risposta! Nota: usa le virgolette attorno all'attributo della classe, su iPad genera un errore (probabilmente perché la classe è una parola riservata (chiave)) – VDP

+0

Lo stesso errore anche in IE8. Risolto con '" classe "' invece di 'classe' –

1

Hai provato la funzione addClass?

+0

Ma dove aggiungere che la funzione addClass? – rahul

+0

stessa risposta come phoenix ... Dove posso mettere la funzione addClass, perché i pulsanti sono fatti dalla finestra di dialogo jQuery e i pulsanti non hanno ID. – nicosomb

-4

.addClass funzionano  

+0

sì, conosco questa funzione ... ma non so come usarla nel mio caso. – nicosomb

5

C'è una dialogClass un'opzione della funzione finestra è possibile utilizzare per specificare una classe CSS per la finestra stessa. Puoi dargli un nome di classe univoco e usare questo nome di classe per ottenere un riferimento a qualsiasi elemento figlio della finestra di dialogo. Quindi, utilizzare i selettori per ottenere un riferimento ai pulsanti secondari per posizione o per il testo che contiene (probabilmente più efficiente per utilizzare il primo).

7

ho la soluzione, grazie a 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"); 

risolto!

+1

Salvato la mia giornata! :) Grazie –

1

Aveva lo stesso problema. Molto simile alla soluzione di nico ma aggiungere lo stile alla funzione aperta sul dialogo:

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(); 
      } 
Problemi correlati