将jquery fancybox应用于通过ajax加载的元素

时间:2012-03-02 15:52:22

标签: php jquery ajax jquery-ui fancybox

我正在加载一堆数据并将其添加到div中。但是,数据中的某些项目是需要与fancybox一起使用的链接。我正在使用fancybox 1.3.4。我尝试了一些解决方案,比如$ fancybox.init();和$(文件).ajaxStop();没有人工作过。以下是我的代码:

$.post('/ajax/ajax-page.php', $('#filter-results').serialize(), function(boardData){
    leaderboard.html(boardData);
    upper_top_title.text(sport_skill_level+" "+sport_grad_year);
    lower_top_title.text(sport_type+" Leaderboard");
    Cufon.replace('.t');

    // reload scripts necessary for data, fancybox and font
    $.getScript("/js/fancybox/jquery.fancybox-1.3.4.pack.js", function(){
        $.fancybox.init();
            $("a.video").fancybox({
                'transitionIn'  :   'elastic',
                'transitionOut' :   'elastic',
                'speedIn'       :   400, 
                'speedOut'      :   200, 
                'overlayShow'   :   true, 
                'showCloseButton' : true, 
                'width'         : 670, 
                'height'        : 385, 
                'titleShow'     : false, 
                'type'          : 'iframe'
            });
        });

        $.getScript("/js/init.js",  function() {
            loading.hide().parent().find('#leaderboard').show();
            filter_res_btn.removeClass("disabled_btn").removeAttr('disabled');
            $('.ui-selectmenu').removeClass("disabled_btn").removeAttr('disabled');
        });

    });

虽然fancybox代码现在位于$ .getScript()中,但之前没有,我只是在发布之前尝试过。当我点击链接时,我现在得到的是一个错误说:

  

t未定义(范围4中的19个)

如果您有任何建议,请与我们联系。

1 个答案:

答案 0 :(得分:2)

Fancybox 1.3.4不支持动态添加的元素,但是您可以使用jQuery(v1.7.x)API .on()方法将这些新元素绑定到fancybox。 Check this post for "how to"