2009-07-15 9 views
7

Comment supprimer les boutons d'une boîte de dialogue jquery? Par exemple, j'ai essayé de rappeler .dialog avec les nouvelles options correctes, mais la boîte de dialogue ne semble pas affectée.Boîte de dialogue jQuery UI - impossible de supprimer les boutons

$ ('sélecteur'). Dialog ('option', 'boutons', {}); ne fonctionne pas, et cela ne fonctionne pas non plus si les nouvelles chaînes de caractères et fonctions sont déclarées.

Pensées?

+1

Pouvez-vous poster plus d'exemple de code? – juan

+0

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

+0

En fait, cela fonctionne, mais il échouera silencieusement si votre syntaxe est dialog ({'option', ...}); –

Répondre

2

Les boutons ne peuvent pas être ajoutés/définis pendant le chargement du dialogue.

0

Vous devez d'abord destroy en cours. Ensuite, vous pouvez en faire un nouveau avec les nouvelles options que vous voulez. EDITER (à la réponse au commentaire): Je ne sais pas quoi vous dire. J'ai fait ce qui suit sur mon site et WFM.

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

Vous devez revenir à pré-init état de modifier les boutons, qui est ce que destroy fait. Peut-être que je n'étais pas assez clair sur les marches.

+0

Destroying hides. Bien sûr, je peux détruire le dialogue et le reconstruire, mais la documentation de jquery ui semble penser que vous pouvez créer des boutons après la création. –

+0

montage pour répondre à votre commentaire. vous devez revenir à l'état pré-init avant de pouvoir modifier les boutons. – geowa4

13

Vous passez de nouveaux boutons dans un mauvais sens. Les options doivent être transmises en tant qu'objet.

Cela fonctionne:

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

Pas besoin de détruire et de créer de nouveaux dialogue.

Bien sûr, vous pouvez également remplacer les boutons objet avec une nouvelle série de boutons si vous le souhaitez:

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

Anotherm, peut-être le moyen le plus simple et le plus flexible de le faire est via CSS. (et si vous en auriez éventuellement besoin dans le futur ...).

On dirait:

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

Si vous aimez le faire que pour certaines boîtes de dialogue, vous pouvez ajouter l'option dialogClass: lors de l'initialisation de la boîte de dialogue, et votre css ressemblera (par exemple, vous avez ajouté myDialogClass comme dialogClass , de sorte que l'ensemble conteneur de dialogue sera accessible via cette classe:

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

Bonne chance dans la personnalisation

4

FWIW,

$(".dialog").dialog("option", "buttons", null); 
Questions connexes