3

有什么特别的原因为什么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

更新:

我不知道发生了什么,但如果我把

$.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 无法正常工作,但为什么 - 我不知道

4

3 回答 3

3

fancybox.net上的 apidock有点过时了(它适用于 1.xy )。

因此,如果您使用:

  • 您想购买的较旧的 1.xy: $.fancybox.showActivity();
  • 您想要购买的较新的 2.xy: $.fancybox.showLoading();

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

=========问题更新后回答==========

如果没有看到完整的 html 和 js,我无法确定,但您可以尝试:

$(".info_button").bind('click', function (e) {
  e.stopPropagation(); e.preventDefault();
}
于 2012-11-10T19:13:36.963 回答
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>
于 2017-07-22T04:30:19.207 回答
0

问题似乎出在双重幻想箱电话中。下面的工作代码:

    $('.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;
});
于 2012-11-10T23:06:22.770 回答