Comment obtenir l'ancre à partir de L'URL en utilisant jQuery?

j'ai une URL qui est comme:

www.example.com/task1/1.3.html#a_1

Comment puis-je obtenir la valeur d'ancrage a_1 en utilisant jQuery et la stocker comme variable?

151
demandé sur TylerH 2010-08-24 05:25:11

6 réponses

vous pouvez utiliser le .indexOf() et .substring() , comme ceci:

var url = "www.aaa.com/task1/1.3.html#a_1";
var hash = url.substring(url.indexOf("#")+1);

Vous pouvez l'essayer ici , si elle ne peut pas avoir un # , de faire "un 151950920" case comme ceci:

var url = "www.aaa.com/task1/1.3.html#a_1", idx = url.indexOf("#")
var hash = idx != -1 ? url.substring(idx+1) : "";

si c'est L'URL de la page courante , vous pouvez simplement utiliser window.location.hash pour l'obtenir, et remplacer le # si vous voulez.

183
répondu Nick Craver 2010-08-24 01:26:50

vous pouvez utiliser ceci:

var hash = window.location.hash.substr(1);
434
répondu Silvio Delgado 2016-10-26 19:00:01

Utiliser

window.location.hash

pour récupérer tout au-delà et y compris le #

55
répondu Real 2014-08-05 22:39:18

jQuery style:

$(location).attr('hash');
31
répondu Valentin E 2014-04-01 10:11:34

vous pouvez utiliser le" truc "suivant pour analyser tout URL valide. Il tire profit de la élément d'ancrage href propriété liée spéciale hash .

avec jQuery

function getHashFromUrl(url){
    return $("<a />").attr("href", url)[0].hash.replace(/^#/, "");
}
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

Avec plaine de la JS

function getHashFromUrl(url){
    var a = document.createElement("a");
    a.href = url;
    return a.hash.replace(/^#/, "");
};
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1
7
répondu David Murdoch 2013-08-14 17:58:19

si vous avez juste une chaîne d'url (et donc pas d'attribut de hachage), vous pouvez aussi utiliser une expression régulière:

var url = "www.example.com/task1/1.3.html#a_1"  
var anchor = url.match(/#(.*)/)[1] 
2
répondu DrewB 2016-08-25 18:08:38