aggiungi / rimuovi il nome dell’ancora dall’URL corrente senza aggiornare

Voglio che su evento click aggiungere / rimuovere il nome dell’ancora “#on” da aggiungere all’url corrente senza ricaricare la pagina, o usare href = ‘# on’ dai link perché fa saltare la mia pagina

Ad esempio: http://www.example.com/page.html#on in modo da poter rilevare gli utenti che provengono da quell’URL e chiamare la funzione On ()

function On() { //append to current url the anchor "#on" } function Off() { //remove from the current url the anchor "#on" } $('.on').live('click', function() { On(); return false; }); $('.off').live('click', function() { Off(); return false; }); 

Non hai davvero bisogno di jQuery per questo, puoi ottenere / impostare il nome dell’ancora usando location.hash . Se lo metti nella tua funzione jQuery ready, puoi fare qualche azione se è impostata su un certo valore:

 $(function(){ // Remove the # from the hash, as different browsers may or may not include it var hash = location.hash.replace('#',''); if(hash != ''){ // Show the hash if it's set alert(hash); // Clear the hash in the URL location.hash = ''; } }); 

Notare che quando si rimuove l’hash, il # finale potrebbe rimanere nella barra degli indirizzi. Se si desidera rispondere alle modifiche in tempo reale dell’ancora, è ansible associare una richiamata all’evento hashchange :

 $(document).bind("hashchange", function(){ // Anchor has changed. }); 

Se si desidera evitare che la pagina salti in cima quando si cancella l’ancora, è ansible associare l’evento hashchange per tornare alla posizione di scorrimento precedente. Guarda questo esempio: http://jsfiddle.net/yVf7V/

 var lastPos = 0; $('#on').click(function(){ location.hash = 'blah'; }); $('#off').click(function(){ lastPos = $(window).scrollTop(); location.hash = ''; }); $(window).bind('hashchange',function(event){ var hash = location.hash.replace('#',''); if(hash == '') $(window).scrollTop(lastPos); alert(hash); }); 

se stai usando jquery prova questo codice

 $("a[href^=#]").on("click", function(e) { e.preventDefault(); history.pushState({}, "", this.href); });