diff --git a/tests/unit/core/core.js b/tests/unit/core/core.js index f26257053..232b95061 100644 --- a/tests/unit/core/core.js +++ b/tests/unit/core/core.js @@ -57,4 +57,26 @@ test('zIndex', function() { equals($('#zIndexAutoNoParent').zIndex(), 0, 'zIndex never explicitly set in hierarchy'); }); +test('widget factory, merge multiple option arguments', function() { + expect(1); + $.widget("ui.widgetTest", { + _init: function() { + same(this.options, { + disabled: false, + option1: "value1", + option2: "value2", + option3: "value3" + }); + } + }); + $("#main > :first").widgetTest({ + option1: "valuex", + option2: "valuex", + option3: "value3" + }, { + option1: "value1", + option2: "value2" + }); +}); + })(jQuery); diff --git a/ui/ui.core.js b/ui/ui.core.js index e166f0f06..37f1f09e9 100644 --- a/ui/ui.core.js +++ b/ui/ui.core.js @@ -253,6 +253,11 @@ $.widget = function(name, prototype) { args = Array.prototype.slice.call(arguments, 1), returnValue = this; + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length + ? $.extend.apply(null, arguments) + : options; + // prevent calls to internal methods if (isMethodCall && options.substring(0, 1) == '_') { return returnValue;