让 Lightbox 与相册中的 AJAX 配合使用

发布于 2024-12-03 22:42:55 字数 1452 浏览 1 评论 0原文

所以我在弄清楚如何使以下脚本工作方面遇到了一些真正的困难。它将 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> 

谢谢!

So I am having some real difficulty figuring out how to make the following script work. It loads a facebook photo album onto the page, but then I need to call $("a.fancied").fancybox(); to make lightbox work.

The code below attempts to execute this line as a callback to getJSON(), but I am kind of a novice at all this and just cannot figure out why it is not working.

If I type in the console after everything is all loaded $("a.fancied").fancybox(); works no problem.

The site in action: 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> 

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧时模样 2024-12-10 22:42:55

尝试这个代码,对我有用:

<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。

try this code, works for me:

<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>

Basically $.each is asynchronous and when you're creating the albumItem is empty.

Let me know if you need anything else.

Cheers

G.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文