2011-04-10 127 views
1

請看看beta.gulfdine.com。你會看到一個「登錄」鏈接。點擊它啓動一個jQuery覆蓋。jQuery覆蓋:關閉當前覆蓋並打開另一個?

現在點擊「爲什麼加入?」。這將啓動另一個疊加層,其中有一個「立即註冊」鏈接。點擊它打開前一個覆蓋。

現在是這個問題。你會注意到兩個疊加層都有'揭露'選項,這個選項顯示了屏幕的其餘部分變暗。當兩者都獨立打開時,這可以正常工作。但是,當我從「爲什麼加入?」啓動註冊覆蓋圖時,未顯示曝光效果。同時在疊加層之外單擊不起作用。

下面是代碼:

/*Overlays*/ 
var whyJoinOverlay = $("a.whyJoin[rel]").overlay({ expose: '#000', top: 'center', api: true }); 
var loginLinks = $("a.loginLinks[rel]").overlay({ expose: '#000', top: 'center', api: true }); 

$("a.callToAction").click(function (e) { 
    e.preventDefault(); 
    whyJoinOverlay.close(); 
    loginLinks.load(); 
}); 

這是因爲什麼我做錯了,或者這是jQuery的覆蓋的錯誤?

回答

1

吉米似乎一直在錯誤原因的正確軌道上。

事實證明,存在需要,爲了使這項工作要修改一個內置的價值,正如我在jQuery的工具論壇發現:http://flowplayer.org/tools/forum/40/41903

修改後的代碼現在看起來是這樣的:

var whyJoinOverlay = $("a.whyJoin[rel]").overlay({ 
    top: 'center', 
    api: true, 
    mask: { 
     color: "#000", 
     loadSpeed: 0, 
     closeSpeed:0,//this is REQUIRED for the next overlay to work 
     opacity: 0.9 
     } 
}); 

var loginLinks = $("a.loginLinks[rel]").overlay({ expose: '#000', top: 'center', api: true }); 
/* No longer any need for the $("a.callToAction").click() function */ 
1

問題在於,fadeOut動畫未被允許在加載新模式之前完成。我在文檔中搜索了一下,找不到一種方法將回調傳遞給close()函數,但是您需要找到一些方法來實現這一點。出現這種情況時,你的代碼將是這個樣子:

$("a.callToAction").click(function (e) { 
    e.preventDefault(); 
    whyJoinOverlay.close(function() 
    { 
     loginLinks.load(); 
    }); 
}); 

這確保了close功能完成完成load功能開始之前,換句話說,確保行動是同步的。就像我之前所說的那樣,您可能需要在回調傳遞到close函數時有所創意:它可能需要JSON名稱說明符,或者可能需要提前定義。如果你找不到這樣做的方法,那麼你可以添加或者找出替換方法,這是庫的限制。

+0

嗨吉米,你在正確的軌道上 - 我發現在jQuery論壇的答案:http://flowplayer.org/tools/forum/40/41903 – 2011-04-10 02:52:36

+0

這看起來像更新的網址,以同一論壇問題:http://jquerytools.org/forum/tools/40/41903 – 2012-04-13 15:12:07