diff options
author | Scott González <scott.gonzalez@gmail.com> | 2009-08-26 02:06:19 +0000 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2009-08-26 02:06:19 +0000 |
commit | 6c6218fa12cc25695d2203a536b2047879ad904d (patch) | |
tree | dbd5ddc3c69e6ed85662a2c96f0153cb669238bf | |
parent | 99d09ecfaf46b3bde207b17e7a85d5b4bfe19535 (diff) | |
download | jquery-ui-6c6218fa12cc25695d2203a536b2047879ad904d.tar.gz jquery-ui-6c6218fa12cc25695d2203a536b2047879ad904d.zip |
Widget factory: Support passing multiple option hashes on init. Fixes #4784.
-rw-r--r-- | tests/unit/core/core.js | 22 | ||||
-rw-r--r-- | ui/ui.core.js | 5 |
2 files changed, 27 insertions, 0 deletions
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; |