1

我使用 Fancybox 2 创建了一个条款和条件弹出窗口,显示当用户登录到我们的 wordpress 网站时,从 div 标签中检索此内容并使用 php 从 wordpress 页面中查找正确的内容。他们需要点击一个接受按钮来继续并关闭弹出窗口,这个链接是在 div 标签内生成的。使用单独的 php 文件,他们的用户 id 被添加到一个表中,表明他们已经接受了 ts 和 cs。除接受按钮外,一切正常。当我单击接受链接时,窗口没有完全关闭,它停留在屏幕上,但是当我的表使用用户 ID 更新时触发了 onclose 事件。当我单击内容(包括链接)的任意位置时,我可以看到窗口快速进出。

这是我的代码

<a class="fancybox" href="test" style="display:none;">ddd</a>
        <div id="test" style="display:none;height:600;width:750px;">
                        <?php
        global $blog_id,$wpdb;
        // query the DB to retrieve the post 'termsofservice' from the localized sites posts table
        $tnc_notification = $wpdb->get_var( $wpdb->prepare( "select post_content from wp_posts where post_title='Terms & Conditions' and post_status='publish';" ) );
            echo "<p>TERMS and CONDITIONS have changed, please read the new terms and conditions.  By closing this window you automatically accept them</p>";

                    echo '<a href="javascript:jQuery.fancybox.close();">Accept </a> ';

                    echo "<p>".$tnc_notification."</p>";
        ?>

<script type="text/javascript" language="javascript">
function callTNC(){
            jQuery(document).ready(function() {
                    jQuery("#test").fancybox({
                                                'closeBtn': false,
                                                'closeClick': false,
                                                'modal': true,
                                                'maxHeight': 600,
                                                'maxWidth': 750,
                                                afterClose : function (){
                                                    //add the user into the tnc accepted table
                                                    $.get("http://mysite.com/tncaccept.php");
                                                }
                    }).trigger('click');

            });
}

任何帮助将不胜感激,谢谢!

4

1 回答 1

0

找到编辑解决方案:好的,我设法解决了这个问题。您必须在链接中创建一个引用,并在 jQuery(document).ready(function() 声明中拥有实际的关闭函数所以发生的事情是接受链接/按钮中的 javascript 没有正确调用fancybox close。

所以首先在接受链接/按钮中创建引用

echo '<a href="#" id="closeFancy">Accept</a> ';

然后在fancybox声明/初始化中创建函数:

<script type="text/javascript" language="javascript">
function callTNC(){
            jQuery(document).ready(function() { 
                                            jQuery("#closeFancy").click(function(){
                                                jQuery.fancybox.close();
                                                return false;
                                            });
                    jQuery("#test").fancybox({
                                                'closeBtn': false,
                                                'closeClick': false,
                                                'modal': true,
                                                'maxHeight': 600,
                                                'maxWidth': 750,
                                                helpers   : { 
                                                    overlay : {closeClick: false} // prevents closing when clicking OUTSIDE fancybox 
                                                },

                                                afterClose : function (){
                                                    //add the user into the tnc accepted table
                                                    $.get("http://mysite.com/tncaccept.php");
                                                }
                    }).trigger('click');
                                            //$("#acceptClose").click(function(){
                                            //    $.fancybox.close();
                                            //    return false;
                                            //});
            });
}

于 2012-09-25T16:02:59.507 回答