0

我正在尝试打开一个精美的盒子,除了第二次无法打开精美盒子的问题外,一切都已准备就绪。

第一次打开它很好,当我第二次尝试打开它时它没有打开它,这是我的代码

jQuery(document).ready(function() {

jQuery("#destination_Weather").fancybox({
    'titlePosition'     : 'inside',
    'autoScale'          :true,
    'autoDimensions'    : true,  
    'width'             : 600,
    'height'            : 'auto',
    'transitionIn'      : 'none',
    'transitionOut'     : 'none'
   });
});
<div style="display: none">
    <div id="destinationWeather">
        <?php  if(!empty($lat_long_cordinates))  {
             echo displayDestinationWeather('',$lat_long_cordinates);
          } ?>
     </div>
   // one more div used for another fancybox content
</div>

<a href="#destinationWeather" id="destination_Weather">link </a>

我不确定为什么会发生这种情况,但是当我第二次单击链接时,它正在重新加载整个页面。不确定这是花式实现的问题还是 PHP 的一些错误实现。

我还注意到一件事,当我第一次关闭弹出窗口时,destinationWeatherdiv 丢失了所有数据,我在那里只能看到这些信息

<div class="fancybox-inline-tmp" style="display: none;"></div>

不知道为什么会这样?

重要提示:请注意,fancybox v1.3.4 不适用于 jQuery v1.9+。

4

4 回答 4

4

由于您使用的是 fancybox v1.3.4,因此您必须这样做

1)。你的目标内联div应该包含在一个额外的div像中:

<div style="display: none">
    <div id="destinationWeather">
        <?php  if(!empty($lat_long_cordinates))  {
            echo displayDestinationWeather('',$lat_long_cordinates);
        } ?>
    </div>
</div>

请注意,目标div( )除了父包装器(在上面的代码中添加)之外#destinationWeather不应该有任何属性display:nonediv

2)。v1.3.4 中有一个关于inline内容的已知错误(在此处记录),因此您必须在代码中应用解决方法:

jQuery(document).ready(function () {
    jQuery("#destination_Weather").fancybox({
        'titlePosition': 'inside',
        'autoScale': true,
        'autoDimensions': true,
        'width': 600,
        'height': 'auto',
        'transitionIn': 'none',
        'transitionOut': 'none',
        // fix inline bug
        'onCleanup': function () {
            var myContent = this.href;
            $(myContent).unwrap();
        }
    });
});

JSFIDDLE

重要提示:还要注意,fancybox v1.3.4 不适用于 jQuery v1.9+。请参阅此帖子以获取更多参考和解决方法。

于 2013-09-07T09:16:14.277 回答
0

动态内联内容加载

      function loadAnswer(id) 
        {     
                jQuery.fancybox({       
                 'content' : jQuery("#outerFAQ"+id).html(),         
                  /*For Auto height and width*/
                 'onComplete' : function(){
                  jQuery('#fancybox-wrap').css({height:'auto',width:'auto'});
                        /*jQuery('.fancybox-wrap').css('left','50%');*/
                          jQuery.fancybox.resize();
                         jQuery.fancybox.center();  
                                }
            }); 
        }

    /*Dynamically Set the id and passing it to function*/  
     <a class="fancybox"  href="#" onClick="loadAnswer(<?php echo $data->getId()/*Dynamic id*/ ?>);"> Demo </a>

        <div id="outerFAQ<?php echo $data->getId(); ?>"  style="display:none;"> 
        <div id="ans<?php echo $data->getId();?>">
                   demo        
             </div>
 <div>  

单个内联内容加载

   jQuery( "#demo" ).click(function() {
      jQuery.fancybox({
                'content' : jQuery("#demoContent").html(),
                 onComplete: function () {

                                /*Static height width*/  
                               jQuery("#fancybox-content").css({
                                        height:'500px',
                                        overflow:'scroll',
                                    });
                                    jQuery("#fancybox-wrap").css("top","10");
                                    jQuery(".fancybox-wrap").css("position", "absolute");
                                }
        });

    <a  id="demo"  href="#">Click me</a>

    <div style="display: none">
                <div id="demoContent">
                    demo
                </div>
    </div> 
于 2014-10-15T08:16:35.340 回答
0

如果这对这个问题的未来观点有任何用处,我只是花了很长时间试图让它在 Wordpress 中工作,其中一个插件正在加载 v1.3.4 Fancybox。

在对变通办法没有太多运气之后(至少在某种意义上仍然没有给我插件的工作配置),我发现 v1.3.6 Fancybox 不包含上述错误,并且是最快和最方便的解决方案我。

于 2014-01-07T15:57:50.790 回答
0

有一种方法可以解决与 fancybox-1.3.4 相关的问题。使用 fancybox 'onClosed' 事件,将原始 div 内容 HTML 重新分配回相同的 fancybox div 元素。所以当fancybox关闭时,我们会将div(html)的原始内容重新分配给它自己。

$(document).ready(function () {

        fancyMain = $("#fancyMain").html(); //here fancyMain is the div element which is set with display:none

        $("#fancyLinkId").fancybox({
            'hideOnContentClick': false,
            'autoScale': false,
            'autoSize': true,

            'onClosed': function () {
                $('#fancyMain').html(fancyMain);

        }
});

FancyMain 是主 div,样式为 display:none 这是内部 div,实际花式框内容与 id fancydata //花式框中的内容在这里 //end inner div //end maindiv

//然后锚链接关联到内部div一个fancyLinkId href #fancydata

这有效

于 2014-04-08T17:29:32.873 回答