Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Navigation en jQuery/Ajax] Petit problème

Liens dans le bloc chargé...

Sujet résolu
    7 juillet 2009 à 20:10:58

    Bonjour,
    J'ai mis au point un navigation en jQuery pour que tous les liens (dans un premier temps) se chargent dans la balise <div id="corps"></div>

    Ensuite, j'ai mis ce code :
    $(document).ready(function($) {
    				$('a').click(function(){
    					var url = this.href;
    					url = url.split('/');
    					url[3] += '/ajax';
    					url = url.join('/');
    					$("#corps").load(url);
    					return false;				
    				});
    			});
    


    En gros, le code annule l'effet du lien, rajoute "/ajax" devant l'URL (exemple : http://www.siteduzero.com/news.html devient http://www.siteduzero.com/ajax/news.html).

    Ensuite, côté PHP je gère l'URL et grâce au /ajax, je n'affiche pas les menus, le corps etc.

    Le problème est que ce système marche un lien sur deux.

    En effet, lorsque je clique sur le 1er lien, la balise #corps change de contenu mais le problème est que tous les nouveaux liens chargés dans la balise ne seront pas traités comme les autres et redirigeront normalement vers la page pointée par leur attribut href...

    J'aimerai donc que ces liens se comportent comme les autres et chargent leur adresse dans la balise #corps >_< !

    Merci d'avoir lu :) !

    Tags : jquery, navigation, ajax

    Édition :
    • 07/07/09 à 21:04 : body au lieu de #corps
    </span>
    • Partager sur Facebook
    • Partager sur Twitter
    Créateur de www.shotguncovoit.com !
      7 juillet 2009 à 20:25:51

      Déjà je comprend pas pourquoi tu affiche le tout dans la balise "body" ($("body").load(url);)
      Ne devrais-tu pas faire plutôt:
      italique>$("#html").load(url);</italique>

      ??
      • Partager sur Facebook
      • Partager sur Twitter
        7 juillet 2009 à 21:05:51

        Pardon, c'était une coquille.

        Il s'agit bien d'une balise ayant pour id "corps".

        J'ai corrigé. :honte:
        • Partager sur Facebook
        • Partager sur Twitter
        Créateur de www.shotguncovoit.com !
          7 juillet 2009 à 21:44:07

          Donc si tu es passé sur le nouveau jQuery je te conseille d'utiliser plutôt

          $('a').live('click', function(){
          ...
          });
          


          En fait la fonction live permet d'associer un événement à un ou plusieurs éléments et aussi et surtout ça permet de prendre en compte les nouveaux éléments.

          Car dans ta fonction actuelle, ta fonction click associe cet événement aux éléments actuels et non à ceux que tu vas rajouter.
          • Partager sur Facebook
          • Partager sur Twitter
            7 juillet 2009 à 22:33:04

            Merci beaucoup Latouss pour cette fonction, tu me sauves la vie ! >_<

            Et comme je suis généreux et que j'ai pitié de tous ceux qui galèrent à faire comme moi (ou pas), voici le code !

            $(document).ready(function($){				
            	$('a').live('click', function(){
            		var url = this.href; // URL est l'URL que l'on va charger dans la balise #corps
            		var redirect = url; // Redirect est l'URL que l'on va charger dans la barre d'adresse pour préserver l'historique (autre fonction)
            		
            		url = url.split('/');
            		url[3] += '/ajax';
            		url = url.join('/'); // Ces 3 lignes permettent de rajouter /ajax dans notre URL
            		
            		redirect = redirect.split('/');
            		redirect.splice(0, 3);
            		redirect = redirect.join('/');
            		top.location = '#'+redirect; // Ces 4 lignes enlèvent le http://site.com/ de l'adresse et redirige le navigateur vers mapage.php#nouvelle_page.php par exemple
            		
            		$("#corps").load(url); // On charge la page
            		return false; // On annule le lien
            	});					
            }
            


            Il me reste plus qu'à mettre en place la fonction pour gérer l'historique. >_<

            See you ! :)
            • Partager sur Facebook
            • Partager sur Twitter
            Créateur de www.shotguncovoit.com !

            [Navigation en jQuery/Ajax] Petit problème

            × 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