2009-11-13 6 views
1

J'ai une page qui affiche plusieurs blocs avec les détails des résultats. A l'intérieur de chaque bloc, j'ai quelques <a> tags avec thickbox plugin jQuery attaché: class="thickbox"jQuery bind sur l'événement ajax load()

Voici un exemple d'une sorte de balise ampersant:

<a class="thickbox" title="Please Sign In" href="userloginredir.php?height=220&width=350&deal=3"> 

problème vient quand j'ai ajouté une pagination jQuery à la page en raison de trop de résultats affichés sur la page. Le composant div avec les résultats à l'intérieur est mis à jour via l'événement ajax load().

est Ci-dessous le script Pagination:

$(document).ready(function(){ 
    //References 
    var pages = $("#menu_deals li"); 
    var loading = $("#loading_deals"); 
    var content = $("#content_deals"); 

    //show loading bar 
    function showLoading(){ 
     loading 
      .css({visibility:"visible"}) 
      .css({opacity:"1"}) 
      .css({display:"block"}) 
     ; 
    } 
    //hide loading bar 
    function hideLoading(){ 
     loading.fadeTo(1000, 0); 
    }; 


    //Manage click events 
    pages.live('click',function(){ 
     //show the loading bar 
     showLoading(); 

     //Highlight current page number 
     pages.css({'background-color' : ''}); 
     $(this).css({'background-color' : 'yellow'}); 

     //Load content 
     var pageNum = this.id; 
     var targetUrl = "ajax_search_results.php?page=" + pageNum + "&" + $("#dealsForm").serialize() + " #content_d"; 
     content.load(targetUrl, hideLoading); 
    }); 

    //default - 1st page 
    $("#1").css({'background-color' : 'yellow'}); 
    var targetUrl = "ajax_search_results.php?page=1&" + $("#dealsForm").serialize() + " #content_d"; 
    showLoading(); 
    content.load(targetUrl, hideLoading); 
}); 

Quand j'ai ajouté la pagination (code ci-dessus), les événements Thickbox ne sont pas reconnus plus et au lieu de POPING une fenêtre avec le formulaire de connexion à l'intérieur ouvre les résultats dans nouvelle page (agit comme un clic sur un lien normal) De mes connaissances jQuery, cela signifie que les composants ne sont pas définis dans le DOM car le contenu est mis à jour après le déclenchement du document.

Je suis en train de lier l'événement de chargement avec quelque chose comme ceci:

content.bind('load', ???); 

Mais je ne sais pas comment passer les params de charge, targetUrl et la fonction de rappel hideLoading, lors de la liaison de l'événement de charge .

S'il vous plaît aidez-moi dans cette affaire, il m'a déjà fallu plus de temps que possible.

+0

Pourriez-vous donner un lien vers votre page? De cette façon, je peux copier et dépanner. –

Répondre

0
tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox 

appeler cela dans le rappel de l'ajax.

0

Vous avez utilisé la fonction hideLoading comme callback, remplacez-la par celle-ci où vous initialisez la thickbox et masquez également le chargement.

content.load(targetURL, function(){ tb_init('a.thickbox'); hideLoading(); });