2009-12-29 9 views
0

J'ai défini ma boîte de dialogue sur le chargement de la page. Je peux voir la boîte de dialogue et tout semble être bien jusqu'à présent:jquery dialogue fermer pas déclenché

dlg1 = $("#modalHolder"); 
dlg1 = dlg1.dialog({ 
    width: 300, 
    height: 150, 
    modal: true, 
    autoOpen: false, 
    resizable: false, 
    closeOnEscape: false, 
    draggable: false, 
    overlay: { 
     backgroundColor: 'red', 
     opacity: 0.65 
    }, 
    open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); } 
}); 

Maintenant, je voudrais mettre l'événement de fermeture dynamique, alors j'ai essayé ceci:

function setCloseFunction(fun) 
{ 
    dlg1.dialog({ 
     close: function(event, ui) 
     { 
      alert("2"); 
      fun(); 
     } 
    }); 
} 

Et je l'appelle comme: Cependant, à la fermeture de la boîte de dialogue, l'alerte n'apparaît jamais. Des idées?

+0

Vous ne devriez pas utiliser la Constructeur 'Function' pour créer une fonction. Au lieu de cela, vous devriez écrire 'function() {alert ('1'); } '. – SLaks

+0

Merci pour le conseil. – vikasde

Répondre

0

Vous devez écrire:

dlg1.bind('dialogclose', function(event, ui) { 
    alert("2"); 
    fun(); 
}); 

setCloseFunction(function() { alert('1'); }); 

EDIT: Pour supprimer la fonction, vous pouvez appeler unbind('dialogclose').

+0

Merci Slaks. – vikasde

1

La syntaxe utilisée dans setCloseFunction n'est correcte que lorsque vous initialisez une boîte de dialogue. Si la boîte de dialogue existe déjà, comme dans votre cas, vous changez normalement des options comme ceci:

dlg1.dialog('option', optionName, value); 

Pour les événements, tels que close, vous liez un auditeur à lui:

dlg1.bind('dialogclose', function(event, ui) { 
    ... 
}); 
+0

Merci. Ça a marché. – vikasde

+0

Comment est-ce que je supprimerais la même fonction maintenant de dialogClose? – vikasde

+1

Jetez un oeil à la fonction 'unbind': http://docs.jquery.com/Events/unbind#typefn –

Questions connexes