mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Merge pull request #553 from AlbertoMonteiro/master
Dialog: When destroy is called place the element back in original DOM position. Fixed #4980 - Dialog: Destroy should place element back in original DOM position
This commit is contained in:
commit
76c7bf6c3f
@ -140,4 +140,13 @@ test("#6966: Escape key closes all dialogs, not the top one", function(){
|
|||||||
d1.remove();
|
d1.remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("#4980: Destroy should place element back in original DOM position", function(){
|
||||||
|
container = $('<div id="container"><div id="modal">Content</div></div>');
|
||||||
|
modal = container.find('#modal');
|
||||||
|
modal.dialog();
|
||||||
|
ok(!$.contains(container[0], modal[0]), 'dialog should move modal element to outside container element');
|
||||||
|
modal.dialog('destroy');
|
||||||
|
ok($.contains(container[0], modal[0]), 'dialog(destroy) should place element back in original DOM position');
|
||||||
|
});
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
17
ui/jquery.ui.dialog.js
vendored
17
ui/jquery.ui.dialog.js
vendored
@ -77,8 +77,11 @@ $.widget("ui.dialog", {
|
|||||||
// #5742 - .attr() might return a DOMElement
|
// #5742 - .attr() might return a DOMElement
|
||||||
if ( typeof this.originalTitle !== "string" ) {
|
if ( typeof this.originalTitle !== "string" ) {
|
||||||
this.originalTitle = "";
|
this.originalTitle = "";
|
||||||
}
|
}
|
||||||
|
this.oldPosition = {
|
||||||
|
parent: this.element.parent(),
|
||||||
|
index: this.element.parent().children().index( this.element )
|
||||||
|
};
|
||||||
this.options.title = this.options.title || this.originalTitle;
|
this.options.title = this.options.title || this.originalTitle;
|
||||||
var self = this,
|
var self = this,
|
||||||
options = self.options,
|
options = self.options,
|
||||||
@ -168,7 +171,8 @@ $.widget("ui.dialog", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_destroy: function() {
|
_destroy: function() {
|
||||||
var self = this;
|
var self = this, next,
|
||||||
|
oldPosition = this.oldPosition;
|
||||||
|
|
||||||
if ( self.overlay ) {
|
if ( self.overlay ) {
|
||||||
self.overlay.destroy();
|
self.overlay.destroy();
|
||||||
@ -183,6 +187,13 @@ $.widget("ui.dialog", {
|
|||||||
if ( self.originalTitle ) {
|
if ( self.originalTitle ) {
|
||||||
self.element.attr( "title", self.originalTitle );
|
self.element.attr( "title", self.originalTitle );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
next = oldPosition.parent.children().eq( oldPosition.index );
|
||||||
|
if ( next.length ) {
|
||||||
|
next.before( self.element );
|
||||||
|
} else {
|
||||||
|
oldPosition.parent.append( self.element );
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
widget: function() {
|
widget: function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user