如何使用jQuery从URL获取锚点?

zjm*_*126 176 javascript url anchor jquery

我有一个URL,如:

www.example.com/task1/1.3.html#a_1
Run Code Online (Sandbox Code Playgroud)

如何a_1使用jQuery 获取锚值并将其存储为变量?

Sil*_*ado 478

对于当前窗口,您可以使用:

var hash = window.location.hash.substr(1);
Run Code Online (Sandbox Code Playgroud)

要获取主窗口的哈希值,请使用:

var hash = window.top.location.hash.substr(1);
Run Code Online (Sandbox Code Playgroud)

如果你有一个带有URL/hash的字符串,最简单的方法是:

var url = 'https://www.stackoverflow.com/questions/123/abc#10076097';
var hash = url.split('#').pop();
Run Code Online (Sandbox Code Playgroud)

如果您使用的是jQuery,请使用以下命令:

var hash = $(location).attr('hash');
Run Code Online (Sandbox Code Playgroud)

  • @RidIculous试试这个:$(window).on('hashchange',function(){$('h1').text(location.hash.slice(1));}); (4认同)
  • 快捷方式版本-“ var hash = window.location.hash.substr(1);”,因为JS既具有substr / substring函数,它们也不同,但是在这种情况下相同。 (2认同)

Nic*_*ver 204

你可以使用.indexOf().substring(),像这样:

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

你可以在这里尝试一下,如果它可能没有#,请做这样的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) : "";
Run Code Online (Sandbox Code Playgroud)

如果这是当前页面URL,您可以使用window.location.hash它来获取它,并根据需要替换它#.

  • 请注意:要从iFrame中获取主窗口的哈希值,必须使用`window.top.location.hash`. (10认同)
  • `url.split("#").pop()` - 更慢但更容易。 (2认同)

小智 68

使用

window.location.hash
Run Code Online (Sandbox Code Playgroud)

检索超出并包括#的所有内容

  • 如果你不想在最后的字符串中使用hash标记,请记得使用`location.hash.slice(1)`! (15认同)

Val*_*n E 38

jQuery风格:

$(location).attr('hash');
Run Code Online (Sandbox Code Playgroud)

  • @doxin我同意,但问题是"如何使用jQuery从URL获取锚点?" (20认同)
  • 不是每个javascript问题都需要用jquery来解决. (6认同)

Dav*_*och 9

您可以使用以下"技巧"来解析任何有效的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
Run Code Online (Sandbox Code Playgroud)

用简单的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
Run Code Online (Sandbox Code Playgroud)