Fancybox 2.0.6 - AfterClose在fancybox打开之前触发

时间:2012-06-15 13:30:19

标签: jquery asp.net fancybox

我正在使用Fancybox 2.0.6和jQuery 1.7.2。

我有一个带有两个更新面板的asp.net网页,一个在左边,一个在右边。在左侧,有一个带有问卷结构的Telerik RadTreeList控件,选择一个问题会更新右侧面板以及该问题的具体内容。

还有一个按钮(在更新面板之外称为ActionButton),它触发服务器端事件以生成问题答案的ID。 然后,该事件使用答案ID更新隐藏链接,并通过将隐藏的Literal设置为Visible来触发fancybox。

<a href="action.aspx" id="hidden_link" class="actionbutton" style="visibility: hidden;" runat="server"></a>
<asp:Button ID="btnAction" runat="server" meta:resourcekey="btnOpenAction" CssClass="formbuttons" OnClick="btnAction_Click" />
<asp:Literal runat="server" Visible="false" ID="Literal1" Text="<script type='text/javascript' language='javascript'>jQuery(document).ready(function () { $('#MainContent_hidden_link').trigger('click'); });</script>" />

fancybox是一个iFrame,它包含另一个网页,可以将更多详细信息保存到数据库中。 到现在为止还挺好。一切都按预期工作。但是,我现在要做的是更新左侧更新面板以显示已添加详细信息。

这是fancybox代码:

        $("a.actionbutton").fancybox({
            'type': 'iframe',
            'openEffect': 'elastic',
            'closeEffect': 'elastic',
            'openSpeed': 600,
            'closeSpeed': 200,
            'padding': 10,
            'width': 800,
            'height': 600,
            afterClose: function () {
                $('#ctl00$MainContent$btnHiddenAction').trigger('click');
                alert('Ha!'); 
            }
        });

我在这里疯了,因为在关闭之后我无法获得afterClose回调来激活。我得到了“哈!”单击ActionButton后立即发出警报,单击“确定”后,弹出fancybox。我已经尝试过使用beforeClose但它根本不会发射。

将代码粘贴到jsFiddle时,它可以正常工作吗?!?

我做错了什么?在穿着长袖衬衫的家伙出现之前帮助我......

此致 斯蒂芬

1 个答案:

答案 0 :(得分:0)

我最终完全忽略了afterClose事件。

相反,我在fancybox的关闭脚本中添加了一个javascript调用,位于fancybox中显示的action.aspx页面的底部:

</body>
<script language="javascript" type="text/javascript">    function CloseMe() { parent.$.fancybox.close(); parent.document.getElementById('ctl00$MainContent$btnHiddenAction').click(); }</script>
</html>

它对我有用,也许对那里的其他人有帮助...... :)