我有一个带有主题标签的简单链接。即:
<a class="page_navigation" href="#something">click</a>
点击这个,我想最后得到var中的'something'部分(减去哈希)。
到目前为止我已经
了$('.page_navigation').click(function(e)
{
e.preventDefault();
var href = $(this).attr('href');
});
显然,我只是在我的href var中使用上面的代码结束了'#something',我知道我可以做一些正则表达式(不确定如何)去掉#,但是我想知道是否有更容易访问我不知道的href的这一部分,而无需经过一些查找和替换代码。
有什么想法吗?
注意:我也知道我可以将'某些东西'存储在数据标记中,但我正在尝试将此代码保留为DRY。
答案 0 :(得分:2)
如果你知道它中有#
,你可以使用它:
$('.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(/^.*#/, "");
}
});
在HTML5中,您可以使用:
this.hash
但这仅适用于最新的浏览器。
答案 1 :(得分:1)
var theHash = $(this).prop("hash").substr(1);
Related answer另一个问题
答案 2 :(得分:0)
您不需要正则表达式。你可以简单地做
var fragment;
if (window.location.hash) {
fragment = window.location.hash;
}
请注意,这也会选择#符号。所以,
fragment = "#something"
如果您不想要#符号,请使用substring
,如下所示:
fragment = window.location.hash.substring(1)
如果要从锚标记中挑选哈希片段,可以执行以下操作:
var link = $('#yourAnchor').attr('href');
var fragment;
if (link.indexOf("#") !== -1) {
fragment = link.substr(link.indexOf("#") + 1);
}
答案 3 :(得分:0)
<强>码强>
$('.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);
});