Wenn sich der jQuery Dialog nicht erneut öffnen lässt

Das passiert meist wenn man dass Instanziieren des Dialogs in einer Funktion kapselt. Denn der Dialog wird nach dem Schliessen zerstört und lässt sich nicht erneut instanziieren.

Wenn die Instanziierung des Dialog von Vorteil ist, z.b. wenn noch Parameter übergeben werden sollen, kann man sich einfach mit dem Event ‘close’ behelfen. Ein Beispiel:

function show_order_dialog(id){
	$('#dialog').dialog(
		{
			bgiframe: true,
			resizable: true,
			width: 500,
			modal: true,
			// hier wird dafür gesorgt dass der Dialog nach dem
			// schliessen zerstört wird.
			close: function(event, ui) { 
				$(this).dialog('destroy');
			},
			overlay: {
				backgroundColor: '#000',
				opacity: 0.5
			},
			buttons: {
				'Änderungen übernehmen': function() {
					$(this).dialog('close');
					update_order(id);
					// Es bringts wenn man das hier ausführt
					// Denn der X Button oben rechts ruft nur close auf und nicht destroy
					// $(this).dialog('destroy');
				},
				'Unterbrechung löschen': function() {
					$(this).dialog('close');
					delete_order(id);
				},										
				Abbrechen: function() {
					$(this).dialog('close');
				}
			}
		}
	);
 
}

Leave a Reply