mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Widget: option-method should work as getter only when argument length is 1. Fixes #9601 - Widget: calling _setOption with undefined as 3rd argument makes it a getter
(cherry picked from commit ecde7cd41a
)
This commit is contained in:
parent
8eefd2032f
commit
6cdebe84f8
@ -535,7 +535,7 @@ test( ".option() - delegate to ._setOptions()", function() {
|
||||
});
|
||||
|
||||
test( ".option() - delegate to ._setOption()", function() {
|
||||
expect( 2 );
|
||||
expect( 3 );
|
||||
var div,
|
||||
calls = [];
|
||||
$.widget( "ui.testWidget", {
|
||||
@ -554,6 +554,11 @@ test( ".option() - delegate to ._setOption()", function() {
|
||||
deepEqual( calls, [{ key: "foo", val: "bar" }],
|
||||
"_setOption called for single option" );
|
||||
|
||||
calls = [];
|
||||
div.testWidget( "option", "foo", undefined );
|
||||
deepEqual( calls, [{ key: "foo", val: undefined }],
|
||||
"_setOption called for single option where value is undefined" );
|
||||
|
||||
calls = [];
|
||||
div.testWidget( "option", {
|
||||
bar: "qux",
|
||||
@ -566,9 +571,9 @@ test( ".option() - delegate to ._setOption()", function() {
|
||||
});
|
||||
|
||||
test( ".option() - deep option setter", function() {
|
||||
expect( 6 );
|
||||
expect( 9 );
|
||||
$.widget( "ui.testWidget", {} );
|
||||
var div = $( "<div>" ).testWidget();
|
||||
var result, div = $( "<div>" ).testWidget();
|
||||
function deepOption( from, to, msg ) {
|
||||
div.data( "ui-testWidget" ).options.foo = from;
|
||||
$.ui.testWidget.prototype._setOption = function( key, value ) {
|
||||
@ -580,6 +585,12 @@ test( ".option() - deep option setter", function() {
|
||||
deepOption( { bar: "baz" }, { bar: "qux" }, "one deep" );
|
||||
div.testWidget( "option", "foo.bar", "qux" );
|
||||
|
||||
deepOption( { bar: "baz" }, { bar: undefined }, "one deep - value = undefined" );
|
||||
|
||||
result = div.testWidget( "option", "foo.bar", undefined );
|
||||
|
||||
deepEqual ( result, div, "option should return widget on successful set operation" );
|
||||
|
||||
deepOption( null, { bar: "baz" }, "null" );
|
||||
div.testWidget( "option", "foo.bar", "baz" );
|
||||
|
||||
|
4
ui/jquery.ui.widget.js
vendored
4
ui/jquery.ui.widget.js
vendored
@ -315,12 +315,12 @@ $.Widget.prototype = {
|
||||
curOption = curOption[ parts[ i ] ];
|
||||
}
|
||||
key = parts.pop();
|
||||
if ( value === undefined ) {
|
||||
if ( arguments.length === 1 ) {
|
||||
return curOption[ key ] === undefined ? null : curOption[ key ];
|
||||
}
|
||||
curOption[ key ] = value;
|
||||
} else {
|
||||
if ( value === undefined ) {
|
||||
if ( arguments.length === 1 ) {
|
||||
return this.options[ key ] === undefined ? null : this.options[ key ];
|
||||
}
|
||||
options[ key ] = value;
|
||||
|
Loading…
Reference in New Issue
Block a user