2010-05-17 17 views
8

Sto usando il seguente codice per aggiungere un hashtag alla fine di un url. In questo modo qualcuno può copiare quell'URL e riportarli a quella pagina, con alcune div visibili.Interruzione comportamento hashtag predefinito con jquery

$("a.live").click(function() { 
    window.location.hash = 'live'; 
    $("#live).slideDown(); 
}); 

In questo esempio ho un div chiamato 'live', che avrebbe slideDown quando un link viene cliccato, e '#live' aggiunto l'url. Poi ho il codice che controlla i tag hash quando la pagina viene caricata per mostrare i div appropriati.

Il mio problema è, come faccio a impedire al browser di saltare al div "live" una volta che viene chiamato? Non voglio che la pagina scorra fino al div, voglio solo che sia aperta e che l'hashtag sia aggiunto in modo che una persona possa copiarlo e tornare a quella pagina con quel div.

Qualche consiglio?

Grazie!

+0

Aspetta, intendi quando si fa clic sul collegamento sopra, o quando la pagina viene caricata per la prima volta con l'hash presente nell'URL? – karim79

risposta

8

Prova questo:

$("a.live").click(function() { 
    window.location.hash = 'live'; 
    $("#live").slideDown(); 
    return false; // this will prevent default action 
}); 
8

Dipende. Se si vuole evitare che quando l'ancora viene cliccato, utilizzare questo:

$("a.live").click(function(e) { 
    e.preventDefault(); // Prevents browsers default action 
    window.location.hash = 'live'; 
    $("#live").slideDown(); 
}); 

Se si vuole evitare che scorrendo fino al hash quando la pagina viene caricata, non sono sicuro di come si dovrebbe impedirlo.

2

sto assumendo avete un po 'di codice nel caso in pronto documento che viene utilizzato per aprire il div come dici tu? Se è così, ti suggerirei di aggiungere un prefisso all'ID nell'hash (come #_live) in modo che l'ID non venga trovato nel documento e quindi impedisca al browser di scorrere automaticamente a quell'elemento e quindi modificare il codice per rimuovere il prefisso quando lo raccogli.

Sto suggerendo questo 'hack' perché non penso che tu possa impedire il comportamento del browser utilizzando JavaScript, almeno sicuramente non affidabile per una soluzione cross-browser.

Problemi correlati