2009-09-24 3 views
20

Я хочу добавить класс css на кнопки диалогового окна jquery.Добавить класс в диалоговые кнопки jquery

Вот мой код:

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

Например, я хотел бы добавить «.red» класс на моем кнопку „да“.

Как я могу это сделать?

Спасибо!

ответ

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

Это лучший ответ! Примечание: используйте кавычки вокруг атрибута класса, на iPad он выдает ошибку (вероятно, причина, по которой класс является зарезервированным (ключевым) словом) – VDP

+0

Такая же ошибка в IE8 тоже. Решено с '' class "' вместо 'class' –

1

Вы пробовали функцию addClass?

+0

Но где добавить эту функцию addclass? – rahul

+0

такой же ответ, как phoenix ... Где я могу поместить функцию addClass, потому что кнопки создаются с помощью jquery-диалога, а кнопки не имеют идентификаторов. – nicosomb

-4

.addClass функционировать  

+0

Да, я знаю эту функцию ... но я не знаю, как ее использовать в моем случае. – nicosomb

5

Там в dialogClass вариант функции диалог вы можете использовать, чтобы задать класс CSS для самого диалога. Вы можете дать ему уникальное имя класса и использовать это имя класса, чтобы получить ссылку на любые дочерние элементы диалогового окна. Затем используйте селектора, чтобы либо получить ссылку на дочерние кнопки по положению, либо по содержащемуся в нем тексу (возможно, более эффективно использовать первый).

7

У меня есть решение, благодаря Рич:

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

Решено!

+1

Сохраненный мой день! :) Спасибо –

1

Был такой же проблема. Очень похоже на решение NICO, но добавьте стиль к открытой функции в диалоге:

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(); 
      } 
Смежные вопросы