让Lightbox与Photo album中的AJAX一起使用

时间:2011-09-12 15:57:15

标签: jquery ajax callback lightbox getjson

所以我在解决如何使以下脚本工作方面遇到了一些实际困难。它将Facebook相册加载到页面上,但之后我需要调用$("a.fancied").fancybox();来使灯箱工作。

下面的代码试图执行这一行作为getJSON()的回调,但我对这一切都是一个新手,只是无法弄清楚它为什么不起作用。

如果我在加载完所有内容后输入控制台$("a.fancied").fancybox();没问题。

网站的实际效果:http://bagsoffunkansascity.org/white-party-2011.html

 <div id="FBalbum"></div> 
    <script> 
    $(document).ready(function() {

        var AlbumID = "206175519447064";

        var graph = "https://graph.facebook.com/" + AlbumID + "/photos?callback=?";        
        $.getJSON(graph, function(data) {
            var albumItem = [];
            $.each(data, function(key, val) {
                $.each(val, function(key2, val2) {
                    if (val2.source != undefined){
                        albumItem.push(
                            '<li id="' + key2 + '"><a class="fancied" href="' + val2.source + '"><img src="' + val2.picture + '" /></a></li>'
                        );
                    }
                }); 
            });        
            $('<ul />', {
                'class': 'album',
                html: albumItem.join('')
            }).appendTo('#FBalbum'); 
        }, function(){
           $("a.fancied").fancybox();
       });    
    });
    </script> 

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这段代码,对我有用:

<script> 
$(document).ready(function() {

    var AlbumID = "206175519447064";

    var graph = "https://graph.facebook.com/" + AlbumID + "/photos?callback=?";        
    $.getJSON(graph, function(data) {
        var albumItem = [];
        for(var key in data){
            for(var key2 in data[key]){
                val2=data[key][key2];
                if(typeof(val2.source)!="undefined"){
                    albumItem.push(
                        '<li id="' + key2 + '"><a class="fancied" href="' + val2.source + '"><img src="' + val2.picture + '" /></a></li>'
                    );
                }
            }
        }
        $('<ul />', {
            'class': 'album',
            html: albumItem.join('')
        }).appendTo('#FBalbum'); 
       $("a.fancied").fancybox();
    });    
});
</script>

基本上$ .each是异步的,当你创建时,albumItem是空的。

如果您还有其他需要,请告诉我。

干杯

-G。