2011-08-18 49 views
0

我有以下代碼:jquery對話框顯示:blind,hide:drop;唯一的工作,一旦

$("#dialog").dialog({ 
    height: 360, 
    width: 630, 
    modal: true, 
    autoOpen: false, 
    show: 'blind', 
    hide: 'drop', 
    resizable: false, 
    dialogClass: 'noFloat' 
}); 

$("#openDiag").click(function() { 

    $("#dialog").dialog('open'); 

    $.ajax({ 
     type: "POST", 
     url: "setHsdSegment.jsp", 
     dataType: "html", 
     resizable: false, 
     //data:"name="+name+"&age="+age, 
     success: function(data) { 
      $("#response").html(data); 
     } 
    }); 
}); 

,我現在面臨的問題是,在顯示和隱藏只工作一次。如果我再次點擊按鈕(#openDialog),只顯示半透明屏幕,而不是對話框。

有趣的是,這隻有當隱藏是'drop'並且顯示除'drop'之外的其他內容時纔會發生。但是,當節目是「下降」而隱藏是其他任何事情時,那麼一切都很好。

當隱藏是'drop'時,節目是否必須'放'?

編輯:這隻發生在IE瀏覽器。 (像往常一樣IE造成的問題:?d?爲什麼)

回答

0

我找到了解決辦法。不知道這是否是最好的方式,但它的工作原理。 它如下:

$("#openDiag").click(function(){ 
    $('#dialog').dialog('destroy'); 
    $("#dialog").dialog({ 
        height: 360, 
        width: 630, 
        modal: true, 
        autoOpen: true, 
        show: 'slide', 
        hide: 'drop', 
        resizable: false, 
        dialogClass: 'noFloat', 
        buttons: { "Ok": function() { $(this).dialog("close"); 

               } } 
       }); 

這似乎是爲IE瀏覽器,我必須先創建一個新的破壞對話插件。我一開始就保留了'摧毀',因爲我想維持收盤效應。我在這裏失蹤的是在我銷燬它之前檢查插件是否存在。但它仍然有效,沒有錯誤;我不知道爲什麼。

但是,這仍然沒有回答這個問題,爲什麼問題首先存在,只爲這個特定的組合,只有在IE瀏覽器。有人能告訴我原因嗎?

+0

一個更清潔的解決方案可能是在它關閉時破壞這個對話框:http://jsfiddle.net/william/mQkH7/1/。我沒有IE,所以我無法爲你測試這個。 –

+0

這也適用於IE。謝謝。 – Harke

0

似乎在這個演示是工作的罰款:http://jsfiddle.net/william/mQkH7/

也許嘗試升級/降級jQuery UI的。

+0

我有jquery 1.4.2和jquery-ui 1.8.4。但它仍然不起作用。但是你知道爲什麼這種情況只發生在這種特殊情況下嗎? – Harke

+0

更新:這不適用於IE – Harke

+0

這可能是多種原因。找到的一種方法是在調用$('#dialog')。dialog('open')'時,遍歷jQuery和jQuery UI中的每行代碼。 –

1

這是jQuery UI的一個已知的bug: http://bugs.jqueryui.com/ticket/5615

速戰速決是破壞並重新創建對話框:

var $dlg = $("#dialog"); 
var dlgOptions = $dlg.dialog("option"); 
$dlg.dialog("destroy"); 
$dlg.dialog(dlgOptions); 

它接縫,該對話框熄滅屏幕而忘記對在下一次顯示時回來(除非「show」被設置爲「drop」,而相反)。