Я использую jquery-ui-dialog
плагин
Я ищу способ обновить страницу, когда в некоторых случаях диалоговое окно закрыто.
Есть ли способ зафиксировать событие закрытия из диалогового окна?
Я знаю, что могу запускать код при нажатии кнопки закрытия, но это не касается закрытия пользователя с помощью escape или x в правом верхнем углу.
$('div#popup_content')
правильно? Чем я должен это заменить, имея в виду, что мой диалог открывается следующим образомjQuery.fn.dialog.open({})
$('body').on('dialogclose', '.ui-dialog', function(){...});
Я считаю, что вы также можете сделать это при создании диалога (скопированного из проекта, который я сделал):
dialog = $('#dialog').dialog({ modal: true, autoOpen: false, width: 700, height: 500, minWidth: 700, minHeight: 500, position: ["center", 200], close: CloseFunction, overlay: { opacity: 0.5, background: "black" } });
Заметка
close: CloseFunction
источник
var CloseFunction = function() { //Do your custom closing stuff here };
overlay
дважды. Это не обязательно?$("#dialog").dialog({ autoOpen: false, resizable: false, width: 400, height: 140, modal: true, buttons: { "SUBMIT": function() { $("form").submit(); }, "CANCEL": function() { $(this).dialog("close"); } }, close: function() { alert('close'); } });
источник
$( "#dialogueForm" ).dialog({ autoOpen: false, height: "auto", width: "auto", modal: true, my: "center", at: "center", of: window, close : function(){ // functionality goes here } });
"close" свойство диалога дает событие закрытия для того же самого.
источник
Вы также можете попробовать это
$("#dialog").dialog({ autoOpen: false, resizable: true, height: 400, width: 150, position: 'center', title: 'Term Sheet', beforeClose: function(event, ui) { console.log('Event Fire'); }, modal: true, buttons: { "Submit": function () { $(this).dialog("close"); }, "Cancel": function () { $(this).dialog("close"); } } });
источник
Вот что у меня сработало ...
$('#dialog').live("dialogclose", function(){ //code to run on dialog close });
источник
Потому что на самом деле никто не создал ответа с использованием.
on()
вместо этогоbind()
я решил создать его.$('div#dialog').on('dialogclose', function(event) { //custom logic fired after dialog is closed. });
источник
добавьте опцию «закрыть», как в примере, и сделайте то, что вы хотите, встроенную функцию
close: function(e){ //do something }
источник
Если я понимаю, о каком окне вы говорите, не каком $ (window) .unload () (для диалогового окна) не даст вам нужный крючок?
(И если я неправильно понял, и вы говорите о диалоговом окне, созданном с помощью CSS, а не о всплывающем окне браузера, тогда все способы закрытия этого окна являются элементами, для которых вы можете зарегистрировать обработчиков кликов.)
Изменить: А, теперь я вижу, что вы говорите о диалогах jquery-ui, которые создаются с помощью CSS. Вы можете подключить X, который закрывает окно, зарегистрировав обработчик кликов для элемента с классом ui-dialog-titlebar-close .
Возможно, более полезным будет то, что вы расскажете, как быстро это понять. При отображении диалогового окна просто откройте FireBug и проверьте элементы, которые могут закрыть окно. Вы сразу увидите, как они определены, и это даст вам все необходимое для регистрации обработчиков кликов.
Итак, чтобы напрямую ответить на ваш вопрос, я считаю, что ответ действительно «нет» - вы не можете зацепить событие закрытия, но «да» - вы можете довольно легко зацепить все способы закрыть диалоговое окно и получить то, что ты хочешь.
источник
Вы можете попробовать следующий код для записи события закрытия любого элемента: страницы, диалога и т. Д.
$("#dialog").live('pagehide', function(event, ui) { $(this).hide(); });
источник