Get hash value from url

2020-02-17 07:08发布

I'm trying to get the hash value after a link was clicked. Any ideas?

e.g.

The Link

index.html#needThis

This is my result:

index.htmlneedThis

How can I remove the 'index.html' ?

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

标签: jquery url hash
5条回答
够拽才男人
2楼-- · 2020-02-17 07:26

You can try with window location hash.

$('#myselector').on('click', 'a', function(){
    var hash = $(this).attr('href').replace('#', '') //get url
    var hash2 = window.location.hash ;
    console.log(hash2);
})
查看更多
We Are One
3楼-- · 2020-02-17 07:28

Just use var hash = window.location.hash.

It returns everything after #

Or if you've got a variable which contains an url:

$(this).attr('href').substring($(this).attr('href').indexOf('#'))
查看更多
Rolldiameter
4楼-- · 2020-02-17 07:29

update

Modern browsers (not sure how back it goes) can extract the hash directly from anchor elements (so i added #5)


Take your pick ..

  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);

update

Just revisited this and i believe that #2 can be improved to

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

This way if no hash exists it will return empty instead of the whole url..

查看更多
一夜七次
5楼-- · 2020-02-17 07:30

Why not simply use:

window.location.hash

Works just fine for me.

查看更多
The star\"
6楼-- · 2020-02-17 07:30

Try this,

$('#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);
})​
查看更多
登录 后发表回答