该项目正在使用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>
当我第一次点击它时,该事件运行正常,它在一个fancybox弹出窗口中加载从AJAX返回的数据。然而,在我关闭它之后再点击同一个miniWeatherBlock,它没有加载弹出窗口,在控制台中我收到错误:
未捕获TypeError:对象函数(a,b){return new e.fn.init(a,b,h)} 没有方法'fancybox'
在我使用$.fancybox({
任何想法有什么不对?
修改 //头部片段
<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
答案 0 :(得分:2)
可能你在代码中的某个地方再次包含了jQuery核心库。
这导致jQuery(及其别名$)将被恢复,并且删除了附加到它的任何插件。