aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/widget/widget_core.js25
-rw-r--r--ui/jquery.ui.widget.js13
2 files changed, 33 insertions, 5 deletions
diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js
index 604222106..76d6543c2 100644
--- a/tests/unit/widget/widget_core.js
+++ b/tests/unit/widget/widget_core.js
@@ -209,7 +209,30 @@ test( ".option() - getter", function() {
"modifying returned options hash does not modify plugin instance" );
});
-test( ".option() - setter", function() {
+test( ".option() - delegate to ._setOptions()", function() {
+ var calls = [];
+ $.widget( "ui.testWidget", {
+ _create: function() {},
+ _setOptions: function( options ) {
+ calls.push( options );
+ }
+ });
+ var div = $( "<div></div>" ).testWidget();
+
+ calls = [];
+ div.testWidget( "option", "foo", "bar" );
+ same( calls, [{ foo: "bar" }], "_setOptions called for single option" );
+
+ calls = [];
+ div.testWidget( "option", {
+ bar: "qux",
+ quux: "quuux"
+ });
+ same( calls, [{ bar: "qux", quux: "quuux" }],
+ "_setOptions called with multiple options" );
+});
+
+test( ".option() - delegate to ._setOption()", function() {
var calls = [];
$.widget( "ui.testWidget", {
_create: function() {},
diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js
index aef9b8378..866f7441e 100644
--- a/ui/jquery.ui.widget.js
+++ b/ui/jquery.ui.widget.js
@@ -176,12 +176,11 @@ $.Widget.prototype = {
},
option: function( key, value ) {
- var options = key,
- self = this;
+ var options = key;
if ( arguments.length === 0 ) {
// don't return a reference to the internal hash
- return $.extend( {}, self.options );
+ return $.extend( {}, this.options );
}
if (typeof key === "string" ) {
@@ -192,11 +191,17 @@ $.Widget.prototype = {
options[ key ] = value;
}
+ this._setOptions( options );
+
+ return this;
+ },
+ _setOptions: function( options ) {
+ var self = this;
$.each( options, function( key, value ) {
self._setOption( key, value );
});
- return self;
+ return this;
},
_setOption: function( key, value ) {
this.options[ key ] = value;