mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-10-05 01:44:18 +00:00
Dialog: Make sure the overlay instance still exists before trying to remove it. Fixes #6645 - Dialog: Missing element not found check in overlay code.
This commit is contained in:
parent
320dfb8679
commit
dfb3544297
@ -76,6 +76,16 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() {
|
||||
equal($('input:checked').val(), 'b', "checkbox b is checked");
|
||||
|
||||
d1.add(d2).remove();
|
||||
})
|
||||
});
|
||||
|
||||
test("#6645: Missing element not found check in overlay", function(){
|
||||
expect(2);
|
||||
d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true});
|
||||
d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove()}});
|
||||
equals($.ui.dialog.overlay.instances.length, 2, 'two overlays created');
|
||||
d2.dialog('close');
|
||||
equals($.ui.dialog.overlay.instances.length, 1, 'one overlay remains after closing the 2nd overlay');
|
||||
d1.add(d2).remove();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
5
ui/jquery.ui.dialog.js
vendored
5
ui/jquery.ui.dialog.js
vendored
@ -750,7 +750,10 @@ $.extend($.ui.dialog.overlay, {
|
||||
},
|
||||
|
||||
destroy: function($el) {
|
||||
this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
|
||||
var indexOf = $.inArray($el, this.instances);
|
||||
if (indexOf != -1){
|
||||
this.oldInstances.push(this.instances.splice(indexOf, 1)[0]);
|
||||
}
|
||||
|
||||
if (this.instances.length === 0) {
|
||||
$([document, window]).unbind('.dialog-overlay');
|
||||
|
Loading…
Reference in New Issue
Block a user