jquery-ui-dialog – Como conectar-se ao evento de fechamento de checkbox de diálogo

Eu estou usando o plugin jquery-ui-dialog

Eu estou procurando maneira de atualizar a página quando, em algumas circunstâncias, quando o diálogo é fechado.

Existe uma maneira de capturar um evento de fechamento da checkbox de diálogo?

Eu sei que posso executar código quando o botão fechar é clicado, mas isso não cobre o usuário fechar com escape ou o x no canto superior direito.

Eu encontrei!

Você pode pegar o evento close usando o seguinte código:

  $('div#popup_content').on('dialogclose', function(event) { alert('closed'); }); 

Obviamente, posso replace o alerta por qualquer coisa que precise fazer.
Edit: A partir do Jquery 1.7, o bind () tornou-se em ()

Eu acredito que você também pode fazer isso enquanto cria o diálogo (copiado de um projeto que eu fiz):

 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" } }); 

Nota de close: CloseFunction

 $("#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 } }); 

A propriedade “close” do diálogo dá o evento close para o mesmo.

Você também pode tentar isso

 $("#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"); } } }); 

Isto é o que funcionou para mim…

 $('#dialog').live("dialogclose", function(){ //code to run on dialog close }); 

A partir do jQuery 1.7, o método .on () é o método preferido para append manipuladores de events a um documento.

Porque ninguém realmente criou uma resposta com o uso. on() vez de bind() eu decidi criar um.

 $('div#dialog').on('dialogclose', function(event) { //custom logic fired after dialog is closed. }); 

Se eu estou entendendo o tipo de janela que você está falando, não $ (janela) .unload () (para a janela de diálogo) lhe dá o gancho que você precisa?

(E se eu entendi mal, e você está falando de uma checkbox de diálogo feita via CSS, em vez de uma janela do navegador pop-up, todas as formas de fechar essa janela são elementos para os quais você pode registrar os manipuladores de clique.)

Edit: Ah, eu vejo agora você está falando sobre diálogos jquery-ui, que são feitos via CSS. Você pode ligar o X que fecha a janela, registrando um manipulador de clique para o elemento com a class ui-dialog-titlebar-close .

Mais útil, talvez, é você dizer como descobrir isso rapidamente. Ao exibir o diálogo, basta abrir o FireBug e Inspecionar os elementos que podem fechar a janela. Você verá instantaneamente como eles são definidos e isso lhe dá o que você precisa para registrar os manipuladores de cliques.

Então, para responder diretamente a sua pergunta, eu acredito que a resposta é realmente “não” – não há um evento próximo que você possa ligar, mas sim – você pode enganchar todas as maneiras de fechar a checkbox de diálogo com bastante facilidade e obter o que você quer.

adicione a opção ‘fechar’ como sob amostra e faça o que quiser na function inline

 close: function(e){ //do something } 

Você pode tentar o seguinte código para capturar o evento de fechamento para qualquer item: página, diálogo etc.

 $("#dialog").live('pagehide', function(event, ui) { $(this).hide(); });