Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb de liens

dans un calendrier rafraichi avec AJAX

    13 mars 2009 à 12:10:28

    Bonjour à vous,
    après 3 jours de recherches pas très fructueuses sur le net, je me tourne vers le SdZ pour m'aider à résoudre mon problème.
    Je suis sur le développement d'un site web qui comprendrait dans plusieurs pages un petit calendrier comme sur la page d'accueil du SdZ. La seule différence, c'est qu'au lieu d'avoir un petit popup au passage de la souris sur le lien, il faut cliquer et à ce moment, le chargement des évènements s'effectue dans une "fenêtre sur la fenêtre". J'utilise l'utilitaire Facebox (http://famspam.com/facebox ) couplé à JQuery pour avoir cet effet.

    Exemple de lien sur un jour avec évènement.
    <a href="includes/calendrier/event.php?day=2&month=03&year=2009" rel="facebox" class="calendar-event">2</a>
    


    Pour ne pas avoir à recharger à chaque fois la page entière lorsqu'on change de mois dans le calendrier, je fais appel à une fonction Ajax de ma composition. Je passe en paramètres le mois et l'année à cette fonction qui transmet à un script PHP qui effectuera les traitements: recherche des evènements pour le mois et affichage du calendrier en conséquence.

    Entête de mon calendrier avec les liens pour changer de mois.
    <table class="calendar-head"><tr> 
    <td width="21px"><a href="javascript:ajaxCal(2,2009)">&lt;&lt;</a></td> 
     <td width="100%">&nbsp;  Mars&nbsp;2009&nbsp;</td> 
    <td width="21px"><a href="javascript:ajaxCal(4,2009)">&gt;&gt;</a></td> 
    </tr></table>
    


    Et c'est là qu'arrive mon problème! :-°

    Lors du chargement initial de la page, les liens sur les jours avec évènements fonctionnent parfaitement: l'affichage se fait bien dans la boîte par dessus la fenêtre. Mais dès que je change de mois et que je clique sur un évènement, il me charge la page event.php dans la fenêtre en cours. Plus de "boîte par dessus la fenêtre"! :o

    Voilà le résultat de mes recherches de ces derniers jours, j'ai compris l'idée mais je ne sais pas comment appliquer et si ca fonctionne vraiment.
    Il faudrait que je réinitialise les scripts JQuery et Facebox à chaque appel de ma fonction Ajax.

    Chargement dans le head de ma page contenant le calendrier:

    <script src="jquery.js" type="text/javascript"></script>
    <link href="/facebox/facebox.css" media="screen" rel="stylesheet" type="text/css"/>
    <script src="/facebox/facebox.js" type="text/javascript"></script> 
    <script language="javascript">
    jQuery(document).ready(function($) {
          $('a[rel*=facebox]').facebox({
            loading_image : 'loading.gif',
            close_image   : 'closelabel.gif'
          }) 
        })
    </script>
    


    J'espère avoir donné toutes les informations utiles à la résolution de mon problème. S'il en manque, n'hésitez pas à poster pour me demander des portions de code ou des explications supplémentaires!

    Merci beaucoup à ceux qui voudront bien passer un peu de temps à m'aider. :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 mars 2009 à 13:05:06

      Puisque tu as l'air d'un débutant en JS, je te conseil de lire ça Bonnes pratiques javascript. En particulier en ce qui concerne <a> et le préfixe javascript:

      Pour ton problème, quelque chose du genre :
      function lienFacebook ($) {
          $('a[rel*=facebox]').facebox({
              loading_image : 'loading.gif',
              close_image   : 'closelabel.gif'
          }) 
      }
      
      jQuery(document).ready(lienFacebook);
      


      devrait faire l'affaire.

      Il ne te reste plus qu'a appeler la fonction lienFacebook(jQuery); à chaque fois que tu charge du nouveau html.

      Et d'ailleurs si tu suis la petite recommendation sur <a> et <button> le selecteur deviens 'button[class*=facebook]' (l'attribut rel n'existe pas pour <button>).
      Remarque que si tu as effectivement une url à mettre dans le href, utilise <a>, c'est mieux quand même.
      • Partager sur Facebook
      • Partager sur Twitter

      Pb de liens

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown