Widget factory: Support passing multiple option hashes on init. Fixes #4784.

This commit is contained in:
Scott González 2009-08-26 02:06:19 +00:00
parent 99d09ecfaf
commit 6c6218fa12
2 changed files with 27 additions and 0 deletions

View File

@ -57,4 +57,26 @@ test('zIndex', function() {
equals($('#zIndexAutoNoParent').zIndex(), 0, 'zIndex never explicitly set in hierarchy'); 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); })(jQuery);

View File

@ -253,6 +253,11 @@ $.widget = function(name, prototype) {
args = Array.prototype.slice.call(arguments, 1), args = Array.prototype.slice.call(arguments, 1),
returnValue = this; returnValue = this;
// allow multiple hashes to be passed on init
options = !isMethodCall && args.length
? $.extend.apply(null, arguments)
: options;
// prevent calls to internal methods // prevent calls to internal methods
if (isMethodCall && options.substring(0, 1) == '_') { if (isMethodCall && options.substring(0, 1) == '_') {
return returnValue; return returnValue;