jQuery覆盖:关闭当前覆盖并打开另一个?
问题描述:
请看看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的覆盖的错误?
答
吉米似乎一直在错误原因的正确轨道上。
事实证明,存在需要,为了使这项工作要修改一个内置的价值,正如我在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 */
答
问题在于,fadeOut
动画未被允许在加载新模式之前完成。我在文档中搜索了一下,找不到一种方法将回调传递给close()
函数,但是您需要找到一些方法来实现这一点。出现这种情况时,你的代码将是这个样子:
$("a.callToAction").click(function (e) {
e.preventDefault();
whyJoinOverlay.close(function()
{
loginLinks.load();
});
});
这确保了close
功能完成完成load
功能开始之前,换句话说,确保行动是同步的。就像我之前所说的那样,您可能需要在回调传递到close
函数时有所创意:它可能需要JSON名称说明符,或者可能需要提前定义。如果你找不到这样做的方法,那么你可以添加或者找出替换方法,这是库的限制。
嗨吉米,你在正确的轨道上 - 我发现在jQuery论坛的答案:http://flowplayer.org/tools/forum/40/41903 – 2011-04-10 02:52:36
这看起来像更新的网址,以同一论坛问题:http://jquerytools.org/forum/tools/40/41903 – 2012-04-13 15:12:07