我试图在点击链接后获取哈希值。有什么想法吗?
e.g。
链接
index.html#needThis
这是我的结果:
index.htmlneedThis
如何删除'index.html'?
$('#myselector').on('click', 'a', function(){
var hash = $(this).attr('href').replace('#', '') //get url
console.log(hash);
})
答案 0 :(得分:65)
<强>更新强>
现代浏览器(不确定它是怎么回事)可以直接从锚元素中提取hash
(所以我添加了#5 )
请你选择..
var hash = $(this).attr('href').split('#')[1];
var hash = $(this).attr('href').replace(/^.*?#/,'');
var href = $(this).attr('href'), hash = href.substr(href.indexOf('#')+1);
var hash = $(this).attr('href').match(/#(.*$)/)[1];
var hash = this.hash.substr(1);
<强>更新强>
重温这一点,我相信#2可以改进
$(this).attr('href').replace(/^.*?(#|$)/,'');
这样,如果不存在哈希,它将返回空而不是整个网址。
答案 1 :(得分:16)
只需使用var hash = window.location.hash
。
它返回#
之后的所有内容或者,如果您有一个包含网址的变量:
$(this).attr('href').substring($(this).attr('href').indexOf('#'))
答案 2 :(得分:5)
您可以尝试使用窗口位置哈希。
$('#myselector').on('click', 'a', function(){
var hash = $(this).attr('href').replace('#', '') //get url
var hash2 = window.location.hash ;
console.log(hash2);
})
答案 3 :(得分:2)
为什么不简单地使用:
window.location.hash
对我来说效果很好。
答案 4 :(得分: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);
})