jQuery-UI-1.7.1 Modal Schließen auf Overlay Klicken
Ich versuche, die das Standardverhalten überschreiben, jQuery UI modal-Dialogfeld, um das Dialogfeld zu schließen, wenn das overlay geklickt wird. Den code habe ich unten das Dialogfeld zu schließen, nachdem ich es öffnen zum ersten mal, und klicken Sie auf das overlay. Wenn ich öffnen Sie das Dialogfeld erneut, indem Sie auf das overlay macht nichts. Mir fehlt eine Veranstaltung hier. Kann mir jemand erklären, was mache ich hier falsch?
Dank!
$(function(){
$('#production_schedule_dialog').dialog({
autoOpen: false,
width: 570,
modal: true,
closeOnEscape: true
});
$('#production_schedule_dialog_link').click(function(){
$('#production_schedule_dialog').dialog('open');
return false;
});
$(document).bind('click', dialogBlur);
});
var dialogBlur = function(event){
var target = $(event.target);
if (target.is('.ui-dialog') || target.parents('.ui-dialog').length) {
return;
}
$('.ui-dialog:visible').find('.ui-dialog-titlebar-close').trigger('click');
$(document).unbind('click', dialogBlur);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Weg, es zu tun:
http://www.ryanjeffords.com/blog/entry/closing-a-jquery-ui-dialog-when-the-dialog-loses-focus
Fügen Sie diese:
Paul ' s Lösung funktioniert gut, wenn Sie eine alte version von jQuery (pre-1.7). Jetzt
.live()
veraltet ist obwohl. Versuchen Sie es miton()
statt.$(document).on('click', function() { $('.dialog').dialog("close"); });
.ui-widget-overly
wird dynamisch erstellt, so dass dieser code nicht unbedingt gebunden werden, wenn erforderlich. Ich habe dieses Problem gelöst, indem es innerhalb deropen()
Ereignis des dialogs, so bindet es NACH.ui-widget-overly
erstellt. Die Zuordnung einesclick
Ereignis, um das gesamte Dokument kann ein bisschen overkill.Ich bin mir nicht sicher, warum dein code nicht funktioniert, aber ich nahm es, modifiziert es, und bekam eine version, die zu funktionieren scheint, da sowohl Sie als auch ich möchten:
Der große Unterschied hier ist, dass ich mich verbindlich dialog-schließen-Logik zu Klicks auf die JQuery-overlay-Objekt (statt des Dokuments, wie Sie sind). Und ich weiß die Verbindlichkeit, wenn sich der dialog öffnet und unverbindlich, wenn der dialog geschlossen. Nicht wirklich notwendig, aber es hält die Dinge sauber.
Egal, danke für die inspiration.
Beste Weg, es zu tun :
.ui-widget-overlay
? Warum sind Sie erstellen ein Ereignis, das dauerhaft fest an den Körper für etwas, das nicht dauerhaft dort?suchen, bei deinem Beispiel sieht es aus wie Sie sind unverbindlich, die Veranstaltung und nicht die Einstellung zu sichern.
versuchen Sie, Ihre bind-Aufruf:
sollte rebind Ihre Unschärfe Zuhörer jedes mal, wenn das Dialogfeld geöffnet ist.
Wenn Seite enthält nur wenige Dialoge, Sie können mit dieser universellen Methode:
Dieser Beitrag kann helfen:
http://www.jensbits.com/2010/06/16/jquery-modal-dialog-close-on-overlay-click/
So viele komplizierte Antworten... hier ist eine einfache, wiederverwendbare ein.