diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index d20f1d764ff..2d0cbe9071f 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -71,6 +71,31 @@ test("buttons", function() { el.remove(); }); +test("buttons - advanced", function() { + expect(5); + + el = $("
").dialog({ + buttons: [ + { + text: "a button", + "class": "additional-class", + id: "my-button-id", + click: function() { + equals(this, el[0], "correct context"); + } + } + ] + }); + var buttons = dlg().find("button"); + equals(buttons.length, 1, "correct number of buttons"); + equals(buttons.attr("id"), "my-button-id", "correct id"); + equals(buttons.text(), "a button", "correct label"); + ok(buttons.hasClass("additional-class"), "additional classes added"); + buttons.click(); + + el.remove(); +}); + test("closeOnEscape", function() { el = $('
').dialog({ closeOnEscape: false }); ok(true, 'closeOnEscape: false'); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index ff23751643c..17300b178b8 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -357,10 +357,15 @@ $.widget("ui.dialog", { }); } if (hasButtons) { - $.each(buttons, function(name, fn) { - var button = $('') - .text(name) - .click(function() { fn.apply(self.element[0], arguments); }) + $.each(buttons, function(name, props) { + props = $.isFunction( props ) ? + { click: props, text: name } : + props; + var button = $('', props) + .unbind('click') + .click(function() { + props.click.apply(self.element[0], arguments); + }) .appendTo(uiButtonSet); if ($.fn.button) { button.button();