2009-07-15 14 views
7

Come rimuovere i pulsanti in una finestra di dialogo jQuery? Ad esempio, ho provato a richiamare .dialog con le nuove opzioni corrette, ma la finestra di dialogo sembra inalterata.Finestra di dialogo dell'interfaccia utente jQuery - impossibile rimuovere i pulsanti

$ ('. Selettore'). Finestra di dialogo ('opzione', 'pulsanti', {}); non funziona, e non funziona se vengono dichiarate nuove stringhe e funzioni dei pulsanti.

Pensieri?

+1

Puoi pubblicare altro codice di esempio? – juan

+0

http://jqueryui.com/demos/dialog/#option-buttons –

+0

Come risulta, funziona, ma fallirà silenziosamente se la tua sintassi è dialog ({'opzione', ...}); –

risposta

2

I pulsanti non possono essere aggiunti/impostati durante il caricamento della finestra di dialogo.

0

È necessario destroy quello corrente per primo. Quindi puoi crearne uno nuovo con le nuove opzioni che desideri.

MODIFICA (in risposta al commento): Non so cosa dirti. Ho fatto quanto segue sul mio sito e WFM.

$('.selector').dialog('destroy'); 
$('.selector').dialog({ buttons: { "Ok": function() { $(this).dialog("close"); } } }); 
$('.selector').dialog('open'); 

è necessario tornare a pre-init Stato per modificare i pulsanti, che è ciò destroy fa. Forse non ero abbastanza chiaro sui gradini.

+0

Distruggere le pelli. Ovviamente posso distruggere la finestra di dialogo e ricostruirla di nuovo, ma la documentazione di jquery ui sembra pensare che sia possibile creare pulsanti dopo la creazione. –

+0

modifica per rispondere al tuo commento. è necessario tornare allo stato pre-init prima di poter modificare i pulsanti. – geowa4

13

Si stanno passando nuovi pulsanti impostati in modo errato. Le opzioni dovrebbero essere passate come un oggetto.

Ciò funzionerà:

var options = { 
    buttons: {} 
}; 
$(selector).dialog('option', options); 

Non c'è bisogno di distruggere e creare una nuova finestra di dialogo.

Naturalmente si può anche sostituire i pulsanti oggetto con una nuova serie di pulsanti, se lo si desidera:

var options = { 
    buttons: { 
     NewButton: function() { 
      $(this).dialog('close'); 
      // add code here 
     } 
    } 
}; 
$(selector).dialog('option', options); 
0

Anotherm, forse il modo più semplice e molto flessibile per farlo è tramite CSS. (cosa succede se alla fine ne avrai bisogno in futuro ...).

Assomiglia:

.ui-dialog-titlebar-close{display:none} 

Se vi piace farlo solo per alcune finestre di dialogo, è possibile aggiungere dialogClass: opzione durante l'inizializzazione della finestra, e il CSS sarà simile (ad esempio hai myDialogClass aggiunto come dialogClass , così l'intero contenitore di dialogo sarà accessibile via questa classe:

.myDialog .ui-dialog-titlebar-close{display:none} 

Buona fortuna nella personalizzazione

4

FWIW,

$(".dialog").dialog("option", "buttons", null); 
Problemi correlati