PhotoSwipe 动态ajax加载图片
程序员文章站
2022-05-28 11:54:35
...
开发JqueryMobile的时候需要用到PhotoSwipe插件来显示图片。
下载地址:
http://www.photoswipe.com/
如何让程序能动态加载图片呢,参照demo改写了一下,在初始化的时候先加载图片,然后再实现效果:
<script type="text/javascript">
var options = {};
var instance;
(function(window, $, PhotoSwipe) {
$(document).ready(function() {
loadDatas();
});
/*初始化插件*/
function bindPhotoSwipe() {
instance = $("#Gallery a").photoSwipe(options);
var size = $("#Gallery a").length;
// onDisplayImage
instance.addEventHandler(PhotoSwipe.EventTypes.onDisplayImage,
function(e) {
console.log("Number of images loaded so far: "+ instance.cache.images.length);
});
}
/*
加载数据
*/
function loadDatas(){
var url = "./action/GetPicAction.do";
var content = '';
$.get(url,function(response){
$.each(response,function(index,item){
content += "<li><a href=\""+item.fullurl+"\" rel=\"external\"><img src=\""+item.thumburl+"\" /></a></li>";
});
$("#Gallery").append(content);
},"json");
bindPhotoSwipe();
};
/*
解绑
*/
function detatch(){
PhotoSwipe.detatch(instance);
PhotoSwipe.activeInstances = [];
}
}(window, window.jQuery, window.Code.PhotoSwipe));
</script>
程序看起来是没什么问题,图片也能出来,但是就是没有图片预览效果。
用firebug调试出现下面的错误:
uncaught exception: Code.PhotoSwipe.createInstance: No images to passed.
在构造插件结构的时候没加载进图片。
这个问题折腾了好久,最终想到是不是同步异步的问题,于是在发送ajax请求的时候加了一句,关掉异步请求。
$.ajaxSettings.async = false;
抱着试一试的态度,谁知结果还真实现了。
附上后台生成的json字符串:
[{"fullurl":"images/full/1.jpg","thumburl":"images/thumb/1.jpg"},{"fullurl":"images/full/2.jpg","thumburl":"images/thumb/2.jpg"},{"fullurl":"images/full/3.jpg","thumburl":"images/thumb/3.jpg"},{"fullurl":"images/full/4.jpg","thumburl":"images/thumb/4.jpg"},{"fullurl":"images/full/5.jpg","thumburl":"images/thumb/5.jpg"},{"fullurl":"images/full/6.jpg","thumburl":"images/thumb/6.jpg"},{"fullurl":"images/full/7.jpg","thumburl":"images/thumb/7.jpg"},{"fullurl":"images/full/8.jpg","thumburl":"images/thumb/8.jpg"},{"fullurl":"images/full/9.jpg","thumburl":"images/thumb/9.jpg"}]
附上页面代码:
<div data-role="page" id="pic_index" class="gallery-page">
<div data-role="header">
<h1>美女图片</h1>
</div>
<div data-role="content">
<ul class="gallery" id="Gallery">
</ul>
</div>
<div data-role="footer">
<h4>@飘渺</h4>
</div>
</div>
上一篇: RMI动态类加载