Utilisation de window.location.hash dans jQuery

Je voudrais créer un menu de navigation avec fondu de couleur à l’aide de jQuery, dans lequel le bouton “enfoncé” correspondant à la page en cours se comporte différemment du bouton “non pressé” (plus précisément, il ne passe pas à une couleur différente au survol). Si je regarde l’exemple sur www.guitaracademy.nl, je constate qu’ils utilisent du javascript natif avec la propriété window.location.hash.

Cependant, je n’arrive pas à obtenir ce hash dans jQuery. Voici un exemple de script:

    $(function(){ var p=window.location.hash; $("#clickme").click(function(){ alert(p) }); });    Click me first 
Then click me

Après avoir chargé cette page, je clique sur le lien “Cliquez sur moi en premier”; puis dans la barre d’adresse, je vois “#test” ajouté à l’URL d’origine. Cependant, si je clique ensuite sur le lien “Ensuite, clique sur moi”, une alerte vide s’affiche. Il semble que le hash ne soit pas “mis à jour”.

J’apprécierais grandement toute aide à ce sujet.

Essayez de déplacer l’appel du hachage vers l’intérieur de la fonction afin qu’elle soit appelée chaque fois que le clic est appelé. La façon dont vous l’avez eu, il ne se chargeait que sur le chargement initial de la page.

 $(function(){ $("#clickme").click(function(){ var p=window.location.hash; alert(p) }); }); 

Essayez de mettre var p=window.location.hash; dans votre click-listener:

  

Le hachage est en train d’être mis à jour mais dans ce cas, la variable ‘p’ n’est pas mise à jour.

Voici la déclaration de mission

 var p=window.location.hash; 

est exécuté une seule fois lorsque la page est chargée. Donc, au moment du chargement, la valeur de P est vide et sera toujours vide.

Au lieu de

 alert(p) 

essayer

 alert(window.location.hash) 

ou déplacez l’affectation à l’intérieur du rappel au clic. c’est-à-dire juste au dessus de la déclaration d’alerte

Votre fonction pour la div #clickme ne tente jamais de mettre à jour le hachage. Si vous vous attendiez à ce que votre code mette à jour le hachage, vous devrez le manipuler comme ceci:

 $("#clickme").click(function(){ window.location.hash='#secondclick'; //Remaining Code });