jQuery检查第一个哈希的url字符串,然后删除它之前的所有内容

时间:2013-09-26 18:26:44

标签: jquery regex

我对RegEx有一个问题我想弄清楚。

例如我有一个网址

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

我想要做的是检查网址以查看网址是否包含哈希值,如果确实如此,则删除之前的所有内容,以便我只剩下

#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,因此它只有哈希后的所有内容。

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

由于

2 个答案:

答案 0 :(得分: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”

答案 1 :(得分:0)

这样的东西
  var index = window.location.indexOf("#");
  var location = window.location;
  if(index != -1) {
     location = location.substring(index, location.length);
  }