2010-06-11 6 views
1

1) Nous avons une page index.html avec des blocs:lien de contrôle jQuery

<body> 
<div id="action1">One</div> 
<div id="action2">Two</div> 
<div id="action3">Three</div> 
</body> 

2) CSS

body div { color: blue; } 
body div.current { font-weight: bold; color: red; } 

3) Autres pages avec des liens vers index.html et une cible :

<a href="index.html#action1">Link to One</a><br/> 
<a href="index.html#action2">Link to Two</a><br/> 
<a href="index.html#action3">Link to Three</a><br/> 

La question est comment attraper la cible du lien à la page en coursindex.html et donner la classe supplémentaire pour le bloc cible.

Si le lien actuel de page ouverte est index.html#action1, puis ajouter la classe .current-<div id="action1">One</div> - deviendra <div id="action1" class="current">One</div>

Si index.html#action2 -><div id="action2" class="current">Two</div>

Et ainsi de suite.

  • chèque # target
  • chèque id
  • si target = id addClass ("courant") pour le bloc avec id

Merci.

Répondre

3

Vous pouvez le faire:

$(function() { 
    if(location.hash) $(location.hash).addClass("current"); 
}); 

Il utilise le location's hash property (s'il y en a un), ce serait "#action1" comme ID selector ajoute alors la classe via .addClass(), court et simple :)

+0

chaud pour enlever "#" de la valeur? – Happy

+0

@Happy - Vous ne voudriez pas si vous l'utilisez comme un sélecteur, vous * voulez * ce préfixe '# '. Si vous avez besoin de la valeur pour quelque chose d'autre, appelez juste 'location.hash.replace ('#', '')' –

+0

désolé, cela fonctionne parfaitement. Merci :) – Happy