2009-12-29 2 views
0

Я определил свой диалог на загрузке страницы. Я могу видеть диалоговое окно и кажется, что все будет хорошо до сих пор:jquery dialog close не уволен

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(); } 
}); 

Теперь я хотел бы, чтобы установить близкое событие динамически, поэтому я попытался это:

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

И я называю это так:

setCloseFunction(new Function("alert('1')")); 

Однако при закрытии диалога предупреждение не появляется. Есть идеи?

+0

Вы не должны использовать Конструктор 'Function' для создания функции. Вместо этого вы должны написать 'function() {alert ('1'); } '. – SLaks

+0

Спасибо за подсказку. – vikasde

ответ

0

Вы должны написать следующее:

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

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

EDIT: Чтобы удалить функцию, вы можете вызвать unbind('dialogclose').

+0

Спасибо, Слаксы. – vikasde

1

Синтаксис, используемый в setCloseFunction, является правильным только при инициализации диалогового окна. Если диалог уже существует, как в вашем случае, вы обычно изменить параметры, как это:

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

Для событий, таких как close, вы связываете слушателя к нему:

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

Спасибо. Это сработало. – vikasde

+0

Как бы удалить ту же функцию сейчас из dialogClose? – vikasde

+1

Взгляните на функцию 'unbind': http://docs.jquery.com/Events/unbind#typefn –