Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 15h55   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Par défaut Menu image actif selon page

Bonjour à tous,

débutant en javascript, me voilà confronté à mon premier problème. Je suis en train de créer mon site perso (www.2buzzy.fr), mais je bloque sur l'affichage de mon menu image. En effet, une fonction javascript me permet de ne pas rafraichir ma page. Elle va chercher le div que je veux sur une autre pas donnée et la charge sur mon index.html avec un petit effet sympa. Cependant pour pouvoir linker n'importe quelle page de mon site, un tag est ajouté en fin d'URL.
Exemple pour mon contenu de /contact.html, l'url est 2buzzy.fr/#contact

Afin de modifier mes images menu par rapport à mon contenu, j'ai rajouté quelques lignes dans mon script, et là c'est le drame.
J'identifie le hash de ma page, et en fonction je change le contenu de mon bloc image menu correspond par une autre image, cela marche bien, UNE seule fois. Ensuite ça me charge une autre page...

Voici mon script pour le chargement de mon contenu "contact" : (voir commentaires pour les lignes que j'ai ajouté pour le changement de menu)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
(document).ready(function() {
 
	var hash = window.location.hash.substr(1);
	var href = $('#contact a').each(function(){
		var href = $(this).attr('href');
		if(hash==href.substr(0,href.length-5)){
			var toLoad = hash+'.html #page';
			$('#page').load(toLoad)
		}											
	});
 
	$('#contact a').click(function(){
		document.title = "2buzzy | Contact";
//-----------MODIFICATION-----------
		if((window.location.hash)=='#travaux') 
	document.getElementById("travaux").innerHTML  = "<a href=\"travaux.html\" title=\"Mes réalisations\" ><img src=\"img/travaux1.png\" onmouseover=\"javascript:this.src='img/travaux2.png';\" onmouseout=\"javascript:this.src='img/travaux1.png';\" name=\"travaux\"></a>";
//-----------FINMODIFICATION-----------
		var toLoad = $(this).attr('href')+' #page';
		$('#page').hide('fast',loadpage);
		window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
		function loadpage() {
			$('#page').load(toLoad,'',showNewpage())
		}
		function showNewpage() {
			$('#page').show('normal');
		}
//-----------MODIFICATION-----------		
document.getElementById("contact").innerHTML  = "<a href=\"contact.html\" title=\"Contactez-moi\" ><img src=\"img/contact3.png\" name=\"contact\"></a>";
//-----------FINMODIFICATION-----------
		return false;
 
	});
 
});

Et voici mon code HTML pour ce qui est du bloc "contact" :
Code :
1
2
3
<div id="contact">
        <a href="contact.html" title="Contactez-moi" ><img src="img/contact1.png" OnMouseOver="javascript:this.src='img/contact2.png';" OnMouseOut="javascript:this.src='img/contact1.png';" name="contact"></a>
 		</div>
Ce n'est pas un problème bien méchant, et pourtant je n'arrive pas à le résoudre. N'hésitez pas à aller voir directement sur mon site pour comprendre le pourquoi du comment : www.2buzzy.fr
Merci d'avance pour votre aide !
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 10h20   #2
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

jpense que c'est parce que tu recharges la page :
Code :
1
2
3
$('#contact a').click(function(){
//blabla
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
Au début, tu rentres dans ton document.ready.
Tu bind alors sur les balises a ta fonction qui load le contenu.
Seulement quand tu réactualises ton menu, tu rebind pas sur tes balises a la fonction qui load ton contenu.

Donc tu peux remplacer .click, par .live.
Cela dit, j'ai pas testé, c'est ptet pas ca.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 10h44   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 47
Points : 12
Points : 12
Merci de ta réponse galerien, cependant le .live ne fonctionne malheureusement pas.
Logarithmix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web