【发布时间】: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