Como obter a âncora da URL usando jQuery?

Eu tenho um URL que é como:

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

Como posso obter o valor de âncora a_1 usando jQuery e armazená-lo como uma variável?

Você pode usar o .indexOf() e .substring() , assim:

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

Você pode tentar aqui , se ele não tiver um # , faça um if(url.indexOf("#") != -1) verifique assim:

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

Se este é o URL da página atual , você pode simplesmente usar window.location.hash para obtê-lo e replace o # se desejar.

Você pode usar isto:

 var hash = window.location.hash.substr(1); 

Usar

 window.location.hash 

para recuperar tudo além e incluindo o #

estilo jQuery:

 $(location).attr('hash'); 

Você pode usar o seguinte “truque” para analisar qualquer URL válido. Ele tira proveito da propriedade especial relacionada ao href do elemento âncora , o hash .

Com jQuery

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

Com JS simples

 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 

Se você tiver apenas uma cadeia de caracteres de URL simples (e, portanto, não possui um atributo hash), também poderá usar uma expressão regular:

 var url = "www.example.com/task1/1.3.html#a_1" var anchor = url.match(/#(.*)/)[1]