Javascript Fancybox 2关闭按钮/链接事件无法正常工作

时间:2012-09-21 14:45:07

标签: php javascript wordpress fancybox

我使用Fancybox 2创建条款和条件弹出窗口,显示当用户登录我们的wordpress网站时,此内容从div标签中检索并使用php从wordpress页面中查找正确的内容。他们需要单击“接受”按钮继续并关闭弹出窗口,此链接在div标记内生成。使用单独的php文件,他们的用户ID被添加到一个表中,表明他们已经接受了ts和cs。一切都有效,除了接受按钮。当我单击“接受”链接时,窗口未完全关闭,它将保持在屏幕上,但是当我的表使用用户ID更新时,会触发onclose事件。当我点击内容的任何地方(包括链接)时,我可以看到窗口快速闪烁。所以我猜测fancybox上面有某种不可见的覆盖,阻止链接被执行?

这是我的代码

<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');

            });
}

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

1 个答案:

答案 0 :(得分:0)

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

首先在接受链接/按钮

中创建引用
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;
                                            //});
            });
}