Javascript 如何获取链接中#符号后的文本?

Javascript 如何获取链接中#符号后的文本?,javascript,jquery,Javascript,Jquery,我有一个带有标签的简单链接。即: <a class="page_navigation" href="#something">click</a> 显然,我只是在我的href var中用上面的代码结束了“#something”,我知道我可以用某种正则表达式(不知道如何)来去除#,但我想知道是否有一种更简单的方法来访问我不知道的href的这一部分,而不必通过一些查找和替换代码 有什么想法吗 注意:我也知道我可以将“某物”存储在数据标记中,但我正在尝试使此代码尽可能干燥。如果您

我有一个带有标签的简单链接。即:

<a class="page_navigation" href="#something">click</a>
显然,我只是在我的href var中用上面的代码结束了“#something”,我知道我可以用某种正则表达式(不知道如何)来去除#,但我想知道是否有一种更简单的方法来访问我不知道的href的这一部分,而不必通过一些查找和替换代码

有什么想法吗


注意:我也知道我可以将“某物”存储在数据标记中,但我正在尝试使此代码尽可能干燥。

如果您知道其中有一个
#
,您可以使用以下方法:

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = this.href.replace(/^.*#/, "");
});
$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = "";
    if (this.href.indexOf("#") {
        hash = this.href.replace(/^.*#/, "");
    }
});
如果您不知道它是否有,您可以使用:

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = this.href.replace(/^.*#/, "");
});
$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = "";
    if (this.href.indexOf("#") {
        hash = this.href.replace(/^.*#/, "");
    }
});
在中,您可以使用:

this.hash

但这仅适用于最新的浏览器。

如果您知道其中有一个
,您可以使用以下方法:

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = this.href.replace(/^.*#/, "");
});
$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = "";
    if (this.href.indexOf("#") {
        hash = this.href.replace(/^.*#/, "");
    }
});
如果您不知道它是否有,您可以使用:

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = this.href.replace(/^.*#/, "");
});
$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var hash = "";
    if (this.href.indexOf("#") {
        hash = this.href.replace(/^.*#/, "");
    }
});
在中,您可以使用:

this.hash

但这只适用于最新的浏览器。

这不需要正则表达式。你可以简单地做

var fragment;

if (window.location.hash) {
    fragment = window.location.hash;
}
请注意,这也将拾取#符号。所以

fragment=“#某物”

如果不需要#符号,请使用如下
子字符串

fragment = window.location.hash.substring(1)
如果要从锚标记中挑选哈希片段,可以执行以下操作:

var link = $('#yourAnchor').attr('href');
var fragment;
if (link.indexOf("#") !== -1) {
    fragment = link.substr(link.indexOf("#") + 1);
}

这不需要正则表达式。你可以简单地做

var fragment;

if (window.location.hash) {
    fragment = window.location.hash;
}
请注意,这也将拾取#符号。所以

fragment=“#某物”

如果不需要#符号,请使用如下
子字符串

fragment = window.location.hash.substring(1)
如果要从锚标记中挑选哈希片段,可以执行以下操作:

var link = $('#yourAnchor').attr('href');
var fragment;
if (link.indexOf("#") !== -1) {
    fragment = link.substr(link.indexOf("#") + 1);
}
另一个问题

到另一个问题

演示

代码

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var href = $(this).attr('href');
    var equalPosition = href.indexOf('#'); //Get the position of '#'
    var withouthash = href.substring(equalPosition + 1); 
    alert(withouthash);
});​
演示

代码

$('.page_navigation').click(function(e)
{
    e.preventDefault();
    var href = $(this).attr('href');
    var equalPosition = href.indexOf('#'); //Get the position of '#'
    var withouthash = href.substring(equalPosition + 1); 
    alert(withouthash);
});​

如果我错了,请纠正我,但我认为如果使用
location.hash
代替href会更好一些。只是在某种程度上,它们在URL的中间有一个<代码> < <代码> > @ MZLIX-<代码>位置。散列只在页面URL上工作。这个问题是关于链接中的URL。即使没有散列,你的第一个URL也能工作吗?如果没有,则图案将不匹配,因此不会替换任何内容。如果哈希是第一个字符,则第二种方法将不起作用,因为
.indexOf()
将返回0。@nnnnnn-如果不存在哈希,则我假设所需的结果为空字符串,在这种情况下,第一种方法将返回整个URL。如果我错了,请更正我,但是我认为如果你用
location.hash
代替href会更好一些。只是在某种程度上,它们在URL的中间有一个<代码> < <代码> > @ MZLIX-<代码>位置。散列只在页面URL上工作。这个问题是关于链接中的URL。即使没有散列,你的第一个URL也能工作吗?如果没有,则图案将不匹配,因此不会替换任何内容。如果散列是第一个字符,第二种方法将不起作用,因为
.indexOf()
将返回0。@nnnnnn-如果没有散列,我假设所需的结果是空字符串,在这种情况下,第一种方法将返回整个URL。-1 OP询问的是
标记中的链接,而不是当前页面的位置。哦,我错过了那部分。编辑答案1 OP询问的是
标签中的链接,而不是当前页面的位置。哦,我错过了那部分。编辑答案