2012-03-07 2 views
0

Я искал похожие темы на SO, но ни один из решений не работал для меня. Я заполняю свою страницу ссылками через Ajax. Например:Fancybox по динамическим ссылкам

$.post('php/common/auction_view/auction_invoices.php', function(data){ 
    $('#auction-invoices').html(data); 
    //Initiate Fancybox on links 
    $("a.example4").fancybox({ 
      'opacity'  : false, 
      'overlayShow' : false, 
      'transitionIn' : 'elastic', 
      'transitionOut' : 'elastic', 
      'type'   : 'iframe' 
    }); 
}); 

Хотя, это не работает. у кого-нибудь есть решение? Thanx!

РЕДАКТИРОВАТЬ: Окей, найдено решение:

$.post('php/common/auction_view/auction_invoices.php', function(data){ 
$('#auction-invoices').html(data); 
$.getScript("fancybox/jquery.fancybox-1.3.4.js", function(){ 
    $.fancybox.init(); 
    $("a.example4").fancybox({ 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'overlayShow'  : false, 
     'showCloseButton' : true, 
     'width'    : 450, 
     'height'   : 585, 
     'titleShow'   : false, 
     'type'    : 'iframe' 
    }); 
}); 

});

enter code here 
+0

Вы пытались связать это? $ ("a.example4"). bind (function() {$ (this) .fancybox ({});}) ;. Это может быть проблемой. – Ohgodwhy

+0

Должен ли я помещать его в вызов ajax? – Ismailp

ответ

0

Fancybox v1.3.x не поддерживает динамически добавленные элементы.

Я ответил на аналогичный question here, который использует метод jQuery .on() для привязки fancybox к динамически добавленным элементам.

Tweak код, чтобы соответствовать вашим контейнер, как:

$("#auction-invoices").on("focusin", function(){... 
0

Этот ответ не помог мне, это к сложным, но это решение, которое помогло мне (Jquery 1.7.2 и FancyBox 1.3.4):

Open jquery.fancybox-1.3.4.js и редактировать его о линии 790 как этот

$.fn.fancybox = function(options) { 
    if (!$(this).length) { 
     return this; 
    } 

    $(this) 

     .unbind('click.fb') 
     .live('click.fb', function(e) { 
     $(this).data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) 
      e.preventDefault(); 

Это решение решить мои проблемы, и нет необходимости менять что-либо еще, даже инициализация бэр ain, как и по умолчанию.

$(".trigger").fancybox(); 

Это просто и чисто. Надеюсь, это поможет.

Смежные вопросы