Note de l'éditeur : l'approche ci-dessous a de sérieuses implications en matière de sécurité et, selon la version de jQuery que vous utilisez, peut exposer vos utilisateurs à des attaques XSS. Pour plus de détails, voir la discussion de l'attaque possible dans les commentaires de cette réponse ou cette explication sur Security Stack Exchange .
Vous pouvez utiliser le location.hash
pour récupérer le hachage de la page actuelle :
var hash = window.location.hash;
$('ul'+hash+':first').show();
Notez que cette propriété contient déjà le #
au début.
En fait, vous n'avez pas besoin de la :first
étant donné que vous utilisez le pseudo-sélecteur Sélecteur d'identité On suppose que les ID sont unique dans le DOM.
Si vous souhaitez obtenir le hachage d'une chaîne d'URL, vous pouvez utiliser la fonction String.substring
méthode :
var url = "http://example.com/file.htm#foo";
var hash = url.substring(url.indexOf('#')); // '#foo'
Conseil : Sachez que l'utilisateur peut changer le hachage comme il le souhaite, en injectant n'importe quoi dans votre sélecteur, vous devez vérifier le hachage avant de l'utiliser.
9 votes
Je n'ai pas de code pour vous, mais vous devriez vous assurer de nettoyer l'entrée, car cela semble mûr pour l'injection de code.
0 votes
Sachant que cette question date de presque dix ans,
'ul#foo:first'
n'a pas de sens puisque les ID doit être unique, il faut donc ajouter:first
au sélecteur est redondant, à moins que vous ne dupliquiez les ID, ce qui n'est pas valable. Notez que même il y a dix ans, les ID répétés étaient toujours invalides.0 votes
C'était encore faux il y a dix ans