jQuery如何从URL中移除哈希值

17

我有一个像这样的硬编码URL:

https://bupacouk.bwa.local.internal.bupa.co.uk/cash-plan-quote/quoteAction.do?getBenefitLevelDetails=getBenefitLevelDetails&productPolicyId=7841#a1

当 JavaScript 启用时,我不想在末尾使用哈希值,那么如何删除它?

当禁用 JavaScript 时,哈希值需要存在。

谢谢。

编辑

这是我正在使用的 AJAX jQuery。因此,我将硬编码的 URL 传递到服务器上的同一页面,并从中检索表:

        // Find href of current tab
    var $tabValue = $(this).attr('href');

    // AJAX new table in
    $.ajax({
        type: "GET",
        cache: false,
        url: $(this).attr('href'),
        success: function(data){

        // Find benefit wrap
        $(data).find('.benefitWrap').each(function(){
            // get the contents
            var $benefitWrap = $(this).html();
            // replace contents on page
            $('.benefitWrap').replaceWith($('<div class="benefitWrap">' + $benefitWrap + '</div>'));

        });

       }

    });

请提供更多信息。您的jQuery是什么样的? - user241244
4个回答

29

原始回答

这取决于哈希值的作用。如果它只是将文档移到#a1,那么您只需要在文档加载后将scrollTop设置为0。

编辑

查看其他stackoverflow问题,

parent.location.hash = ''

应该可以做到,但是可能会重新加载页面(你需要测试一下)

除此之外,我建议在您的AJAX调用期间/之前处理它 - 例如

备注:Original Answer翻译成“最初的回答”

if (hash != 'a1'){ doAjax(); } //pseudocode obviously.

根据发布的代码进行编辑2

或者,如果您只需要使用没有哈希标记的url调用AJAX,您可以在调用jQuery的字符串中删除它,不是吗?


注:Original Answer翻译成"最初的回答"
var $tabValue = $(this).attr('href');
var $withoutHash = $tabValue.substr(0,$tabValue.indexOf('#'));

我们基本上是在第一个#之前获取a标签的href属性,即"最初的回答"。

我需要彻底将它移除,因为它导致某些 AJAX 失败。 - RyanP13

14

只需要简单地执行 window.location.hash="" 即可。


1
你不需要使用jQuery来执行这个语句。 - David Christiansen
2
嗯...这让我只能看到mypage.htm#,我错过了什么吗?我想要看到mypage.htm。 - ptim
3
使用这个解决方案后,有些浏览器会在末尾留下哈希标记,而有些则不会。 - Steve Chab

8

如果有人问如何在href中提取#后面的数据,这篇文章可能会对他有所帮助。

this.hash.slice(1);

这将把 #123 转化为 123。


编辑:如果你要从这些数据中计算数字,最好使用 parseInt(this.hash.slice(1));,否则你会得到奇怪的结果。


2
这对我很有用。我添加了一个!来防止页面向上滚动。翻译成中文为:"这对我很有帮助。我添加了一个以防止页面向上滚动。"
window.location.hash="!";

2
太好了。简直不敢相信我差不多十年前问过这个问题,哈哈。 - RyanP13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接