使用带有动态加载链接的jQuery Fancybox(灯箱类型对话框)

时间:2010-05-05 16:34:02

标签: javascript fancybox jquery

我正在尝试绑定Fancy框链接,以便在创建新链接时它仍然有效。我在这里看到了一些其他问题,但没有真正回答。这就是我想要做的。

jQuery("a#[id^='domore_']").fancybox({
'autoDimensions' : false,
'width'           : 'auto',
'height'          : 'auto'
});

这很好但是当ajax重新加载页面或链接时它不起作用。我尝试使用live(),但我无法让它工作。你如何重新启动或实现fancybox上的直播?有什么办法吗? 感谢

3 个答案:

答案 0 :(得分:11)

我个人使用jQuery's live function

jQuery("a#[id^='domore_']").live('click', function(){
    jQuery.fancybox({
        'autoDimensions'  : false,
        'width'           : 'auto',
        'height'          : 'auto',
        'href'            : $(this).attr('href')
    });
    return false;
});

注意:与您的问题没有真正关联,但要注意jQuery 1.4.2在IE中选择使用更改事件时有点问题,但1.4.1似乎没问题目前。 (在Jquery 1.4.2 for IE中搜索“更改”事件的“live()方法”(在1.4.1中工作)“在谷歌上,我不能添加链接,因为我是新的)

希望有所帮助

答案 1 :(得分:2)

你可以用它。它对我有用

$('.address').live('click',
function(){                 
    $(this).fancybox({
        'width'         : '40%',
        'height'        : '70%',
        'autoScale'     : false,
        'transitionIn'  : 'none',
        'transitionOut' : 'none',
        'type'          : 'iframe',
        'onClosed'      : function() {
            $("#basket").load("/order/basket");   
        }
    }).trigger("click"); 
    return false;
});

答案 2 :(得分:1)

您可能必须在ajax success / callback方法中包含faceybox函数调用:

$.ajax({
  url: 'test.html',
  success: function(data) {
    $('.result')
     .html(data)
     .find("a#[id^='domore_']").fancybox({
       'autoDimensions' : false,
       'width'          : 'auto',
       'height'         : 'auto'
     });
  }
});