2011-12-04 68 views
4

當一個用戶點擊按鈕我表現出的fancybox,指出用戶應等到動作完成:打開的fancybox同時的fancybox的另一個實例是開放

jQuery(document).ready(function() { 
      $.fancybox('Please Wait...',{'modal':true}); 
     }); 

現在我通過檢查請求的動作$。員額功能並返回結果消息(無論是動作成功完成或錯誤爲何操作失敗),現在我想結束了第一的fancybox,並顯示與響應新的fancybox我從阿賈克斯得到:

$.post('someurl.aspx',{'somethingtopost':'value'}, 
function(data){ 
jQuery(document).ready(function() { 
$.fancybox(data); 
     }); 
    } 
); 

問題是第二個fancybox不顯示。有很多關於在關閉第一個fancybox時顯示第二個fancybox的示例(添加到onClosed屬性),但在這一個中,我不想在關閉第一個後顯示第二個fanybox,我想在動作發生時顯示它完成。

回答

7

您可以隨時觸發第二個Fancybox,無論有沒有一個已經打開(並且沒有先關閉它)。當動作完成時,嘗試發射第二個Fancybox。

第二個Fancybox窗口(一旦觸發)將替換第一個Fancybox窗口,而不需要任何進一步的關閉命令。

function openFancybox() { 
    setTimeout(function() {$('#delayed').trigger('click'); },10000); 
} 
$(document).ready(function() { 
    $('#pageLoad').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }).click(); 
    openFancybox(); 
    $('#delayed').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }); 
}); // ready 

我設置在頁加載開始的fancybox一個example page here,則它在10秒後觸發一個第二的fancybox。

第二個Fancybox在第二個被激發後自動關閉。

UPDATE

或者,也許你會喜歡this version

function openFancybox() { 
    setTimeout(function() {$('#delayed').trigger('click'); },10000); 
} 
$(document).ready(function() { 
    $('#goProcess').click(function(){ 
     $.fancybox({ 
      href: '#wait', 
      modal: true, 
      helpers: {overlay:{opacity: 0.3}}, 
      afterLoad: function() { 
       openFancybox(); 
      } 
     }); // fancybox 
    }); 
    $('#delayed').fancybox({ 
     helpers: {overlay:{opacity: 0.3}} 
    }); 
}); // ready 

上的按鈕,點擊打開的fancybox,然後觸發10秒 之後的第二次的fancybox(或完成後臺進程後, )

+0

非常感謝您的回答以及您所做的示例。但問題是,第二個fancybox必須在ajax返回值後出現,而新fancybox顯示的內容是從ajax響應中獲取的數據。 $ .fancybox('內容1); $ .fancybox( '內容2');這裏只會顯示content1,第二個會被忽略。 –

+0

據我瞭解,第一個Fancybox是打開按鈕單擊和第二次打開與ajax調用返回的值,如果是這樣,我想你應該包括 - 成功:功能(數據){$ .fancybox(數據); } - 在你的ajax調用來激發第二個fancybox ....我想你還需要 - data:$(this).serializeArray() - 不止一個內容字段。查看http://fancybox.net/blog No.5,瞭解如何通過ajax調用來調用fancybox。 – JFK

+0

只是想和我說,我找到了這個答案後陷入了一個不同的問題,但具有相同的解決方案。我試圖關閉一個,然後打開另一個,它導致各種錯誤。謝謝@JFK –