【问题标题】:Uncaught TypeError: Object function(a,b) has no method 'fancybox'未捕获的类型错误:对象函数(a,b)没有方法“fancybox”
【发布时间】:2013-11-20 12:34:33
【问题描述】:

该项目使用fancyBox v2.0.5和jQuery v1.7.2,我的javascript代码是:

function getWeather() {
    $("body").css("cursor", "progress");
    console.log("click");

    url = 'index.php?model=weather_page';
    $.ajax({
        async: false,
        type: 'GET',
        url: url
    }).done(function(data) {
            $.fancybox({
                'width'             : 850,
                'height'            : 850,
                'speedIn'           : 800,
                'autoScale'         : true,
                'transitionIn'      : 'elastic',
                'transitionOut'     : 'elastic',
                'easingIn'          : 'easeOutBack',
                'easingOut'         : 'easeInBack',
                'type'              : 'inline',
                'scrolling'         : 'auto',
                'closeBtn'          : true,
                'closeClick'        : true,
                'content'           : data,
                'onComplete' : function(){
                    $.fancybox.resize();
                },
            });
            $("body").css("cursor", "auto");
        });
}

在 onclick 事件中运行:

<div id="miniWeatherBlock" onclick="getWeather()">
    // data for mini-weather block
</div>

当我第一次单击该事件时,它运行良好,它在一个花式框弹出窗口中加载从 AJAX 返回的数据。但是,在我关闭它之后,再次单击同一个 miniWeatherBlock,它不会加载弹出窗口,并且在控制台中出现错误:

Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} 没有方法'fancybox'

在我使用$.fancybox({的那一行

有什么想法吗?

编辑: // 头部的 sn-p

<script src="js/jquery.fancybox.pack.js"></script>

<script src="js/functions.js"></script>
</head>

js/functions.js 内部 - 我有 getWeather() 函数。

fancybox 的其他实例可以正常工作,例如,这也在 js/functions.js 文件中:

$(".fancybox-information").fancybox({
    'width'             : 720,
    'height'            : 1300,
    'speedIn'           : 800,
    'autoScale'         : true,
    'transitionIn'      : 'elastic',
    'transitionOut'     : 'elastic',
    'easingIn'          : 'easeOutBack',
    'easingOut'         : 'easeInBack',
    'type'              : 'iframe',
    'scrolling'         : 'no',
    'closeBtn'          : true,
    'closeClick'        : true
});

当页面包含类fancybox-information的元素时效果很好

【问题讨论】:

  • 插件未正确包含..
  • @zzlalani 我在页面头部的 fancybox 之前包含了 jQuery,它适用于所有其他实例,只是这个 getWeather() 函数不能正常工作。第一次打开它可以正常工作,但第二次就不行了...
  • 您是否在代码中的某处再次包含 jQuery?
  • @IrvinDomininakaEdward 嗯,似乎返回的天气页面再次包含 jQuery,我不知道为什么......删除它现在可以正常工作,非常感谢!因此,“再次”包含 jQuery 会导致已经使用以前的“jQuery”版本加载的“jQuery 插件”出现问题?您能否将您的评论写为答案,以便我可以将其标记为完成:)

标签: jquery ajax fancybox-2


【解决方案1】:

可能您在代码中的某处再次包含 jQuery 核心库。

这会导致 jQuery(及其别名 $)将被重置,并且任何附加到它的插件都会被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多