2010-05-05 6 views
5

J'essaye de lier des liens de boîte fantaisie de sorte que lorsque les nouveaux liens sont créés, cela fonctionnera toujours. J'ai vu quelques autres questions ici mais pas vraiment répondu. C'est ce que j'essaie de faire.Utilisez jQuery Fancybox (boîte de dialogue de type lightbox) avec des liens chargés dynamiquement

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

Cela fonctionne très bien mais lorsque la page ou les liens sont rechargés par ajax, cela ne fonctionne pas. J'ai essayé d'utiliser live() mais je n'ai pas réussi à le faire fonctionner. Comment relier ou implémenter en direct sur fancybox? Tout moyen de le faire? Merci

Répondre

11

J'utilise personnellement 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; 
}); 

Note: Pas vraiment lié à votre question, mais soyez averti que jQuery 1.4.2 a un peu d'un problème lors de l'utilisation de l'événement de changement sur une sélection dans IE mais 1.4.1 semble être très bien pour à présent. (recherche "live() méthode pour 'changement' événement cassé dans Jquery 1.4.2 pour IE (travaillé dans 1.4.1)" sur Google, je ne peux pas ajouter le lien que je suis nouveau)

Espérons qu'il aide

+0

Oui, merci, j'ai utilisé le live et j'ai trouvé que vous avez besoin de 1.4.1 à cause de IE. Quel navigateur indésirable. Quoi qu'il en soit, merci pour l'info, c'est ce que j'avais fait avec. BTW votre réponse était totalement liée, c'est ce que j'essayais de faire, mais j'ai fini par découvrir que c'était IE et 1.4.2 était le problème. :) –

+0

Ceci est très utile btw. J'ai renvoyé au moins 3 fois –

+0

THanks mec très utile –

1

Vous aurez probablement inclure l'appel de la fonction faceybox dans votre méthode succès/rappel ajax:

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

Vous pouvez l'utiliser. Cela a fonctionné pour moi

$('.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; 
}); 
Questions connexes