2

我正在尝试解决 RegEx 的问题。

例如我有一个网址

http://localhost:8888/faqs/#answer290

我想要做的是检查 url 以查看 URL 是否包含哈希,如果它包含然后删除它之前的所有内容,所以我只剩下

#answer290

到目前为止我所拥有的是

$("div#questions ul li a").click(function(e){
    var selected = $(this).attr('href');
    console.log(selected);
    if(window.location.href.indexOf("#") > -1) {
        var location = window.location,
            result = /\/([^\/]*)$/.exec(location)[1];
        selected = result;
        console.log(result);
        alert("your url contains #");
    } else {
        selected = selected
    }
    $('.top-button').remove();
    $('.current-faq').removeClass();
    $.scrollTo(selected, 400);
    $(selected).append('<a href="#" class="top-button">TOP</a>');
    $(selected).addClass('current-faq');
});

为了解释我正在做的更多事情是在常见问题页面上,它会找到带有哈希的相应部分并在那里滚动,但问题是当我来自另一个页面时,选择的 url与实际常见问题页面上的不同.

在常见问题解答页面上,警报会触发,但由于某种原因,当我来到另一个链接问题的页面时,它不会触发。

我正在尝试从另一个页面中删除整个 url,以便它在哈希之后包含所有内容。

我似乎很接近,但很难得到最后一部分

谢谢

4

2 回答 2

1

你不需要 RegEx。indexOf/substring 会做:

var s = "http://localhost:8888/faqs/#answer290";

var i = s.indexOf("#")

if (i != -1) {
    alert(s.substring(i, s.length));
}

如果需要读取锚点的哈希属性,可以使用.prop('hash'). 例如对于

<a id="link" href="http://localhost:8888/faqs/#answer290">link</a>

$("#link").prop("hash")将获得“#answer290”

于 2013-09-26T18:31:40.603 回答
0

就像是

  var index = window.location.indexOf("#");
  var location = window.location;
  if(index != -1) {
     location = location.substring(index, location.length);
  }
于 2013-09-26T18:33:53.967 回答