Come implementare la visualizzazione del ancoraggio con nome richiesto utilizzando jQuery / Javascript / CSS
-
22-08-2019 - |
Domanda
La pagina ha un div contenitore che detiene più div contenuti. Ogni div contenuto ha un ancoraggio con nome. Solo viene visualizzato uno dei div di contenuto alla volta:
Esempio:
<style>
.lurk { display: none; }
</style>
<div class="container">
<div id="c1">
<a name="#c1">One</a> is the loneliest number.
</div>
<div id="c2" class="lurk">
<a name="#c2">Two</a> is company.
</div>
<div id="c3" class="lurk">
<a name="#c3">Three</a> is a crowd.
</div>
</div>
<script>
// ... something that adds and removes the lurk class from the content divs
</script>
Il comportamento desiderato è che se qualcuno richiede la pagina utilizzando un nome di ancoraggio valida nell'URL, il JavaScript / JQuery lo vedranno e impostare le varie proprietà di visualizzazione in modo appropriato in modo che il contenuto corrispondente alla ancoraggio con nome è visibile.
- è l'URL che richiede a disposizione JQuery?
- è il controllo per nome ancore nell'URL si realizza presto $ (document) .ready? ()
- è questo difficile da ottenere in un modo cross-browser?
- C'è una routine di libreria per estrarre l'ancora da un URL, o se ognuno tira la propria espressione regolare?
Soluzione
È possibile utilizzare location.hash
per recuperare l'ancora dalla URL. Ciò funzionerà tutti i browser e lavorerà in $(document).ready
.
Ad esempio:
$("div.container > div").removeClass("lurk");
if (location.hash)
$("#" + location.hash).addClass("lurk");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow