Как получить якорь из URL с помощью jQuery?


У меня есть URL, который выглядит так:

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

Как я могу получить a_1 значение якоря с помощью jQuery и сохранить его в качестве переменной?

6 151

6 ответов:

можно использовать .indexOf() и .substring(), например:

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

вы можете попробовать здесь, если он не может иметь # в нем, сделать if(url.indexOf("#") != -1) проверить такой:

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

если это настоящее URL страницы, вы можете просто использовать window.location.hash чтобы получить его, и заменить # если вы хотите.

вы можете использовать это:

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

использовать

window.location.hash

чтобы получить все за пределами и в том числе #

стиль jQuery:

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

вы можете использовать следующий "трюк" для разбора любой допустимый URL-адрес. Он использует в своих интересах анкерный элементспециальное свойство, связанное с href,hash.

С jQuery

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

С простым 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

Если у вас просто есть простая строка url (и поэтому нет атрибута хэша), вы также можете использовать регулярное выражение:

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