2012-11-27 17 views
14

Come posso chiudere tutte le caselle aperte dialog in jQuery? La situazione è la seguente: ho una pagina semplice senza finestre di dialogo. Ha alcuni pulsanti per aprire le finestre di dialogo.Chiudi tutte le finestre di dialogo aperte? (JQuery)

Quando faccio clic su un pulsante, ho bisogno di chiudere tutte le finestre di dialogo aperte.

Ecco il codice HTML:

<div id="buttons"> 
    <a href="#" id="btn_1">Button 1</a> 
    <a href="#" id="btn_2">Button 2</a> 
    <a href="#" id="btn_3">Button 3</a> 
</div> 
<div id="dialog_1" class="dialogbox">...</div> 
<div id="dialog_2" class="dialogbox">...</div> 
<div id="dialog_3" class="dialogbox">...</div> 

E qui è il jQuery:

$(function() { 
    $('#buttons').find('a').click(function() { 
     // close all dialogs 
     $('.dialogbox').dialog("close"); 

     // find out clicked id and open dialog 
     var nr = this.id.split("_")[1]; 
     $('#dialog_'+nr).dialog(); 
    }); 
}); 

Il Chrome dicono: Uncaught Error: cannot call methods on dialog prior initialization; attempted to call method 'close'.

Sono stato tentato di controllare $('.dialogbox').dialog('isOpen'), ma lo stesso risultato.

Come posso chiudere tutte le finestre di dialogo?

+1

è necessario prima inizializzare le finestre di dialogo prima di questa funzione mai ottenere chiama $() pronto (function() {. $ ('dialogbox') finestra di dialogo ({})}) –

risposta

29

Dal momento che tutti ereditano la stessa classe, questo è il modo migliore per selezionare tutto e vicino:

$(".ui-dialog-content").dialog("close");

+1

sweeeeeeeeeeet! – sajanyamaha

+0

Attenzione! Per le finestre di dialogo nell'HTML che non sono ancora state inizializzate, ciò può causare un errore. Una soluzione di lavoro è qui: http://stackoverflow.com/a/9060927/368896 –

1

È possibile semplice provare questo come tutti hanno la classe .ui-dialog-content, in modo da selezionare da quel e chiuderli, in questo modo: -.

$(".ui-dialog-content").dialog("close"); 
+0

Qual è la tua risposta migliore di quella accettata? –

Problemi correlati