2012-06-22 187 views
2

我有一個模式對話框,我把html表單的內容放在裏面。該表單有一個提交和取消按鈕。我找到取消按鈕,或者甚至通過點擊x很慢來關閉對話框。這只是幾秒鐘太慢,但足夠長的時間認爲有一個問題,瘋狂的老鼠答疑者可能會瘋了。關閉jquery模式對話框很慢

是否有使用關閉功能更好的方法和更好的方式來取消變化比我在做什麼:

var $dialog = $('#cameraform').dialog({ 
    modal:true, 
    autoOpen: false, 
    resizable:false, 
    width: 625, 
    close: function() { 
     $(this).dialog('close'); //this is slow 
    } 
}); //init dialog 

//events    
$('.addwebcam').click(function(e) { 
    $dialog.dialog('open'); 
}); 

$(".cancel_changes").click(function() { 
    $dialog.dialog('close'); //this is slow 
}); 

HTML:

<button class="addwebcam">Add Webcam</button> 
<div id="cameraform" title="Add a camera"> 
...//my form 
<button type='button' class='cancel_changes' name='cancel_changes' value='Cancel'>Cancel</button> 
</div> 

任何優化,我可以做這裏?提前致謝。

+0

在這期間你不會離開螢火蟲嗎?我假設你正在使用jQueryUI,如果是這樣的話,對話框不應該那麼慢。你有一堆其他腳本在頁面上運行嗎? – joelmdev

+0

不,但聖牛我剛剛發現你問爲什麼。隨着Firebug的開放,它甚至更加殘酷,我甚至崩潰了我的瀏覽器。 – Tom

+0

是的,最好使用螢火蟲進行調試,然後在不需要時關閉它。它使得js重頁面運行slooooow。 – joelmdev

回答

5

得到close事件擺脫千鈞一髮對您的對話框設置:

var $dialog = $('#cameraform').dialog({ 
    modal:true, 
    autoOpen: false, 
    resizable:false, 
    width: 625, 
    close: function() { 
     // $(this).dialog('close'); //this is slow 
    } 
}); //init dialog 

您是從自身內部調用close事件,從而導致調用棧的溢出。

+0

斑點..! – Alnitak

+0

啊,完美。我認爲這是必要的能夠關閉窗口。 – Tom

+2

@Tom不,那個鉤子讓你可以在對話框關閉時自動做其他的事情。 – Alnitak