【问题标题】:jquery: remove URL fragment on clickjquery:点击时删除 URL 片段
【发布时间】:2011-09-23 16:11:08
【问题描述】:

我有这种类型的哈希 URL,

http://mysite.com/projects/#/article-1/
http://mysite.com/projects/#/article-2/
http://mysite.com/projects/#/article-2/

当我单击页面上的按钮而不重定向页面时,我想删除哈希位(片段)。

$('.back').click(function(){


    // remove the fragment.
    // don't know how to make it..
    return false;

});

所以我只能得到这个,

http://mysite.com/projects/

我该怎么做?

谢谢。

编辑: 这个site 是怎么做到的?如果在ajax加载页面点击close project,例如-

http://www.pentagram.com/work/#/all/all/newest/2534/

你会得到这个,

http://www.pentagram.com/work/#/all/all/newest/

【问题讨论】:

  • 你在使用锚点吗?你需要对第一个子字符串做什么?
  • 没有。我正在使用 location.hash 加载一个 ajax 页面,并且我想在删除该 ajax 页面时将其删除。
  • 关于您的更新:如果您仔细观察,您会发现它不会删除散列。它只是删除了部分哈希。
  • @Felix:感谢您指出这一点。修改后才发现!大声笑

标签: jquery hash click


【解决方案1】:

简短的回答是:

window.location.hash = '';

不过,这会给您留下一个尾随 #

【讨论】:

  • @Flix Kling history.pushState 目前仅支持 Firefox、Chrome 和 Safari。
  • @timw4mail:我知道。当然,必须测试它是否受支持。
  • @lauthiamkok:它不会重定向。跳转不同于重定向。重定向意味着浏览器发出一个 HTTP 请求并加载一个新页面。
【解决方案2】:

如果我理解正确,您可以尝试模仿通常会发生的情况,我的意思是:

  • 点击时阻止默认操作
  • 分析链接,获取哈希部分
  • 在页面上找到锚点(y 坐标)
  • 滚动到锚点

类似这样的:

$("a").click(function() {
    var loc = $(this).attr("href").split("#"),
        hash = loc[1] ? loc[1] : null;
    if (hash && $("a[name="+hash+"]").size() > 0)
    {
        var pos = $("a[name="+hash+"]").position();
        $(window).scrollTop(pos.top);
        return false;
    }
});

这样你的 url 保持不变,但你有功能。

【讨论】:

  • 不,我不是这个意思,其实很抱歉。请看看我的编辑。谢谢。
【解决方案3】:

我很确定这是不可能的。但是,您可以通过像这样设置位置哈希来摆脱哈希之后的所有内容:

location.hash = '';

【讨论】:

  • 在这种情况下,您需要在更改哈希之前删除 onhashchange 事件。
猜你喜欢
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2016-11-11
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多