Datepicker: Support changing the appendTo option after init

This commit is contained in:
TJ VanToll 2013-11-15 08:42:20 -05:00 committed by Scott González
parent 8983fee991
commit b5893906df
2 changed files with 45 additions and 0 deletions

View File

@ -2,6 +2,44 @@
module( "datepicker: options" );
test( "appendTo", function() {
expect( 6 );
var container,
detached = $( "<div>" ),
input = $( "#datepicker" );
input.datepicker();
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, document.body, "defaults to body" );
input.datepicker( "destroy" );
input.datepicker({ appendTo: "#qunit-fixture" });
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, $( "#qunit-fixture" )[ 0 ], "child of specified element" );
input.datepicker( "destroy" );
input.datepicker({ appendTo: "#does-not-exist" });
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, document.body, "set to body if element does not exist" );
input.datepicker( "destroy" );
input.datepicker()
.datepicker( "option", "appendTo", "#qunit-fixture" );
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, $( "#qunit-fixture" )[ 0 ], "modified after init" );
input.datepicker( "destroy" );
input.datepicker({ appendTo: detached });
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, detached[ 0 ], "detached jQuery object" );
input.datepicker( "destroy" );
input.datepicker({ appendTo: detached[ 0 ] });
container = input.datepicker( "widget" ).parent()[ 0 ];
equal( container, detached[ 0 ], "detached DOM element" );
input.datepicker( "destroy" );
});
test( "dateFormat", function() {
expect( 0 );
});

View File

@ -618,6 +618,13 @@ $.widget( "ui.datepicker", {
},
widget: function() {
return this.picker;
},
_setOption: function( key, value ) {
this._super( key, value );
if ( key === "appendTo" ) {
this.picker.appendTo( this._appendTo() );
}
}
});