2009-12-29 73 views
0

我已經在頁面加載中定義了我的對話框。我可以看到對話框,一切似乎要被罰款至今:jquery對話框關閉不被觸發

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 2009-12-29 16:33:46

+0

感謝您的提示。 – vikasde 2009-12-29 16:58:26

回答

0

你應該寫:

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

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

編輯:要刪除​​功能,可以調用unbind('dialogclose')

+0

謝謝Slaks。 – vikasde 2009-12-29 16:52:22

1

在初始化對話框時,setCloseFunction中使用的語法纔是正確的。如果對話框已經存在,在你的情況,你通常改變的選項是這樣的:

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

事件,如close,你的監聽器綁定到它:

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

謝謝。這工作。 – vikasde 2009-12-29 16:40:38

+0

如何從dialogClose中刪除相同的函數? – vikasde 2009-12-29 16:47:27

+1

查看'unbind'函數:http://docs.jquery.com/Events/unbind#typefn – 2009-12-29 17:08:41