2011-10-24 15 views
5

Vorrei creare un menu di navigazione a dissolvenza del colore utilizzando jQuery, in cui il pulsante "premuto" corrispondente alla pagina corrente si comporta in modo diverso dal pulsante "non premuto" (in particolare, non funziona t sfumare su un colore diverso al passaggio del mouse). Se guardo l'esempio su www.guitaracademy.nl, vedo che usano il javascript nativo con la proprietà window.location.hash.Utilizzo di window.location.hash in jQuery

Tuttavia, non riesco a ottenere questo hash in jQuery. Ecco uno script di esempio:

<html> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    var p=window.location.hash; 
    $("#clickme").click(function(){ 
     alert(p) 
    }); 
}); 
</script> 
</head> 
<body> 
<a href="#test">Click me first</a> 
<div id="clickme">Then click me</div> 
</body> 
</html> 

Dopo aver caricato questa pagina, faccio clic sul collegamento "Click me first"; quindi nella barra degli indirizzi vedo "# test" aggiunto all'URL originale. Tuttavia, se faccio clic su "Poi clic su di me" div Vedo un avviso vuoto. Sembra che l'hash non stia 'aggiornando'.

Apprezzerei molto qualsiasi aiuto su questo.

risposta

5

Provare a spostare la chiamata per l'hash all'interno della funzione in modo che venga chiamata ogni volta che viene richiamato il clic. Il modo in cui l'avevi, si stava solo caricando sul caricamento iniziale della pagina.

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

Ciao, sì, ha funzionato, grazie a tutti per le vostre risposte (convergenti)! –

0

La funzione per il div #clickme non tenta mai di aggiornare l'hash. Se ti aspettavi il codice per aggiornare l'hash dovrete manipolarlo come:

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

    //Remaining Code 
}); 
1

Prova a mettere var p=window.location.hash; all'interno del vostro click-ascoltatore:

<script type="text/javascript"> 
    $(function(){ 
     $("#clickme").click(function(){ 
      var p=window.location.hash; 
      alert(p) 
     }); 
    }); 
</script> 
0

l'hash è sempre upadated ma in questo caso la variabile 'p' non viene aggiornata.

Qui l'istruzione di assegnazione

var p=window.location.hash; 

viene eseguito solo una volta quando la pagina viene caricata. Quindi al momento del caricamento il valore di P è vuoto e sarà sempre vuoto.

Invece di

alert(p) 

provare

alert(window.location.hash) 

o spostare l'assegnazione all'interno del click callback. appena sopra la frase di avviso

Problemi correlati