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 !
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>
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.
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 !
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.