2

Fancybox 2.0.6 と jQuery 1.7.2 を使用しています。

左と右に 1 つずつ、2 つの更新パネルを持つ asp.net Web ページがあります。左側には、アンケート構造を持つ Telerik RadTreeList コントロールがあり、質問を選択すると、右側のパネルがその質問の詳細で更新されます。

質問への回答の ID を生成するサーバー側イベントをトリガーするボタン (更新パネルの外側に ActionButton と呼ばれる) もあります。次に、イベントは非表示のリンクを回答 ID で更新し、非表示のリテラルを Visible に設定してファンシーボックスをトリガーします。

<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 は、詳細をデータベースに保存する別の Web ページを含む iFrame です。ここまでは順調ですね。すべてが期待どおりに機能します。しかし、ここでやりたいことは、左側の更新パネルを更新して、詳細が追加されたことを示すことです。

ファンシーボックスのコードは次のとおりです。

        $("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 をクリックするとすぐにアラートが表示され、[OK] をクリックすると、fancybox がポップアップします。beforeClose を使用してみましたが、まったく起動しません。

コードをjsFiddleに貼り付けると、正常に動作しますか?!?

私は何を間違っていますか?腕の長いシャツの奴らが来る前に助けてくれ…

よろしく、ステファン

4

1 に答える 1

0

afterClose イベントを完全に無視してしまいました。

代わりに、fancybox に表示されている action.aspx ページの下部にある、fancybox の close スクリプトに JavaScript 呼び出しを追加しました。

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

それは私にとってはうまくいきます、多分それはそこにいる他の誰かの助けになるでしょう... :)

于 2012-06-21T11:04:32.330 に答える