25

单击链接后,我试图获取哈希值。有任何想法吗?

例如

链接

index.html#needThis

这是我的结果:

index.htmlneedThis

如何删除 'index.html' ?

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    console.log(hash);
})
4

5 回答 5

70

更新

现代浏览器(不确定它是如何返回的hash)可以直接从锚元素中提取(所以我添加了#5


随便挑吧。。

  1. var hash = $(this).attr('href').split('#')[1];
  2. var hash = $(this).attr('href').replace(/^.*?#/,'');
  3. var href = $(this).attr('href'), hash = href.substr(href.indexOf('#')+1);
  4. var hash = $(this).attr('href').match(/#(.*$)/)[1];
  5. var hash = this.hash.substr(1);

更新

刚刚重新审视了这一点,我相信#2可以改进为

$(this).attr('href').replace(/^.*?(#|$)/,'');

这样,如果不存在哈希,它将返回空而不是整个 url..

于 2012-11-12T13:08:23.630 回答
16

只需使用var hash = window.location.hash.

它返回 # 之后的所有内容

或者,如果您有一个包含 url 的变量:

$(this).attr('href').substring($(this).attr('href').indexOf('#'))
于 2012-11-12T13:05:16.260 回答
5

您可以尝试使用窗口位置哈希。

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    var hash2 = window.location.hash ;
    console.log(hash2);
})
于 2012-11-12T13:08:04.520 回答
2

为什么不简单地使用:

window.location.hash

对我来说效果很好。

于 2016-02-08T17:51:18.420 回答
1

试试这个,

$('#myselector').on('click', 'a', function(){
    var url = $(this).attr('href') //get url
    var arr = url.split('#');
    alert(arr[0]); //URL without hash #
    var hash = arr[1];
    console.log(hash);
})​
于 2012-11-12T13:10:47.913 回答