2012-11-10 65 views
2

有原因的fancybox功能的fancybox加载动画不会触发

$.fancybox.showActivity(); 

在我的脚本抛出一个错误什么特别的原因?是否有需要调用函数的特定顺序?该功能用于在内容加载到弹出窗口之前显示加载图像。这里是我的代码:

$(".info_button").click(function() { 

    var pictid_browse = $(this).parent().find('#pictid').val(); 
    $.fancybox.showActivity(); 
    $.ajax({ 
       url: "ajax.html", 
       type: "POST", 
       async:false, 
       data: ({f:"get_info",pictid:pictid_browse}), 
       success: function(data){ 
    $.fancybox({ 
        'autoDimensions' : false, 
       'width'     : 950, 
       'height'    : 'auto', 
       'transitionIn'  : 'none', 
       'transitionOut'  : 'none' 
      }); 
       $.fancybox({content:data,'autoDimensions':true,'scrolling':'no',}); 


    } 
    }); 

    return false; 
    }); 

我得到的错误是:

Uncaught TypeError: Object function() { 
     F.open.apply(this, arguments); 
    } has no method 'showActivity' 

TypeError: 'undefined' is not a function (evaluating '$.fancybox.showActivity()') 

的fancybox版本:2.1.3

UPDATE:

我不知道是怎么回事,但如果我放在

$.fancybox.showLoading(); 

$(".info_button").click(function() { 

之外,那么它触发并显示动画。但我需要它,一旦一类“.info_button”我点击

似乎下面的解决方案并没有解决问题的项目发生或者:

$(".info_button").bind('click', function (e) { 
    e.stopPropagation(); e.preventDefault(); 
} 

研究表明,负载被触发,如果下面的代码被删除:

$.fancybox({ 
content:data, 
       'autoDimensions' : true, 
      'width'     : 'auto', 
      'height'    : 'auto', 
      'transitionIn'  : 'none', 
      'transitionOut'  : 'none', 
      'scrolling':'no' 
     }); 

这可能意味着,包括AJAX功能内时的fancybox不正常工作,但是为什么,我不知道

+0

更新我的回答,请它,如果你更新你的问题发表评论。 – p1100i

+0

你现在是否看到任何类型的错误?也许尝试注释掉.click函数中的所有内容,只留下'$ .fancybox.showLoading();'行。怎么了? – p1100i

+0

但是,如果您查看Firebugs控制台(https://getfirebug.com/),是否看到任何错误消息(没有评论所有内容)?这可能是因为'data'不适合fancybox而且它出错了。或者如果你运行这个本地ajax调用将立即完成,所以你不能期望看到加载图像。我帮你解决了核心问题,而且这个网站不适合辅导某人。 – p1100i

回答

3

fancybox.net上的apidock有点过时了(对于1.x.y)。

所以如果你使用:

  • 1.xy你想去老:$.fancybox.showActivity();
  • 你想要去的新2.xy:$.fancybox.showLoading();

你可以找到文档2.xy fancyapss.com文档和东西。他们保持网站“,因为两个版本(1.x和2.x)有不同的许可证方案”(thx到@JFK)。您可以举报,MB,你从他们那里得到一个金色的星星:)

=========问题更新 ==========

我不能后回答可以肯定没有看到完整的HTML和JS,但你可以尝试:

$(".info_button").bind('click', function (e) { 
    e.stopPropagation(); e.preventDefault(); 
} 
+0

这是一个很好的提示!但我仍然无法显示加载图标。我这次有bo js错误... –

+0

fancybox是什么版本号? – p1100i

+1

'fancybox.net上的apidock有点过时了... ...好吧,事实并非如此。 [fancybox.net](http://fancybox.net/)适用于v1.3.4及以下版本,而[fancyapps.com](http://fancyapps.com/fancybox/)适用于新版本2.x及以上。 Fancybox v1.3.x API选项,方法和回调与v2.x不兼容,反之亦然....使用您正在使用的版本的正确选项。 – JFK

0

的问题似乎是双重的fancybox电话。下面的工作代码:

$('.info_button').bind('click', function() { 
    var pictid_browse = $(this).parent().find('#pictid').val(); 
    $.fancybox.showLoading(); 
    $.ajax({ 
     type:"POST", 
     cache:false, 
     url:"ajax.html", 
     data:({f:"get_info",pictid:pictid_browse}), 
     success: function(data) { 
      $.fancybox({content:data,'autoDimensions':true,'scrolling':'no'}); 
     } 
    }); 
    return false; 
}); 
1

你可以做到这一点

<style> 
    #fancybox-loading{z-index:999999999;} 
    </style> 



    <script> 
         $.fancybox({ 
           'href'   :your_url, 
           'width'   : 900, 
           'height'  : 600, 
           'scrolling' : 'auto', 
           'type'    : 'iframe', 
           'titleShow'  : false, 
           'onComplete' : function() { 
            $.fancybox.showActivity(); 
            $('#fancybox-frame').load(function() { 
             $.fancybox.hideActivity(); 
            }); 
           } 
         }) 
</script>