2009-09-24 8 views
20

Quiero agregar clase css en los botones de un cuadro de diálogo jquery.Agregar clase a los botones de diálogo jquery

Aquí está mi código:

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

Por ejemplo, me gustaría agregar la clase ".red" en mi botón 'sí'.

¿Cómo puedo hacer eso?

¡Gracias!

Respuesta

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

¡Esta es la mejor respuesta! Nota: use comillas alrededor del atributo de clase, en el iPad arroja un error (probablemente porque la clase es una palabra reservada (clave)) – VDP

+0

Mismo error en IE8 también. Resuelto con '" clase "' en lugar de 'clase' –

1

¿Has probado la función addClass?

+0

Pero dónde agregar esa función addClass? – rahul

+0

misma respuesta que phoenix ... Donde puedo poner la función addClass, porque los botones están hechos por el diálogo jquery y los botones no tienen ID's. – nicosomb

-4

.addClass funcionan  

+0

sí, conozco esta función ... pero no sé cómo usarla en mi caso. – nicosomb

5

Hay una opción dedialogClass de la función de diálogo puede utilizar para especificar una clase css para el propio diálogo. Puede darle un nombre de clase único y usar este nombre de clase para obtener una referencia a cualquier elemento secundario del diálogo. Luego, use los selectores para obtener una referencia a los botones secundarios por posición o por el texto que contiene (probablemente sea más eficiente usar el primero).

7

Tengo la solución, gracias 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"); 

resuelto!

+1

¡Me salvó el día! :) Gracias –

1

Tenía el mismo problema. Muy similar a la solución de nico además de añadir el estilo a la función de apertura en el diálogo:

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(); 
      } 
Cuestiones relacionadas