2013-02-08 20 views
6

Sto utilizzando jquery mobile e una finestra di dialogo per visualizzare alcune caselle di selezione multiple. Alcuni dei contenuti sono creati dinamicamente con Ajax in base alle selezioni. Vorrei fare la chiamata Ajax quando la finestra di dialogo è chiusa (tramite il pulsante x regolare). Le parti principali del html apparire come segue:Evento di chiusura della finestra di dialogo in jquery mobile

<a href="#queryPage" data-rel="dialog" data-transition="slidedown" >Filter Results</a> 
    <div data-role="page" id="queryPage" data-theme="a"> 
    <div data-role="header" data-theme="a"> 
    <h1>Select Filters</h1> 
    </div> 
    <div data-role="content"> 
    <form action="" method="get" id="filterForm"> 
    <fieldset id ="filterFields"></fieldset> 
    </form> 
    </div> 
    </div> 

Attualmente sto facendo la chiamata eseguendo il codice nella pagina nascondere come segue: $('#queryPage').live('pagehide', function(event) { //code for ajax call });

Tuttavia, vorrei effettuare la chiamata quando la la finestra di dialogo si chiude perché alcuni degli elenchi di selezione sono grandi e creano una nuova pagina che nasconde la queryPage anche se la finestra di dialogo non è stata chiusa. Ho provato:

$('#queryPage').bind('dialogclose', function(event) { 
     alert('closed'); 
    }); 

e anche provato

$('#queryPage').dialog({close:function(event, ui){ 
     alert("closed"); 
    }}); 

queste cose le ho messo in una funzione chiamata al caricamento della pagina, ma l'allarme non viene visualizzata quando la finestra è chiusa. Qualsiasi aiuto sarà apprezzato.

risposta

12

Non ci sono eventi specifici per i dialoghi in quanto sono semplicemente pagine che vengono visualizzate come finestre di dialogo. Prova l'evento pagehide.

$("#MyDialog").bind("pagehide",function(){ 
    alert("Dialog closed"); 
}); 

Inoltre, la prima riga del codice di esempio ha un link che si trova all'esterno di una <div data-role="page"> che non dovrebbe essere fatto.

+0

Spiacente, ho lasciato il resto del codice html della pagina per quella prima riga perché non pensavo fosse necessario per la domanda. Come ho detto, attualmente sto usando 'pagehide', ma sto cercando di migliorare o solo altri modi per farlo. – user1868237

1

Pagehide può essere delegata in quanto tale:

$(document).delegate("#MyDialog", "pagehide", function() { 
    alert("Dialog closed"); 
}); 

e si avrà anche accesso agli elementi dello schermo della pagina chiamante.

0

Andleer ha condiviso l'evento appropriato per chiudere la finestra di dialogo utilizzando jquery. tuttavia, possiamo anche codificare in questo modo.

Problemi correlati