jQuery从URL中删除哈希值

Rya*_*P13 17 javascript jquery fragment-identifier

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

https://bupacouk.bwa.local.internal.bupa.co.uk/cash-plan-quote/quoteAction.do?getBenefitLevelDetails=getBenefitLevelDetails&productPolicyId=7841#a1
Run Code Online (Sandbox Code Playgroud)

当启用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>'));

        });

       }

    });
Run Code Online (Sandbox Code Playgroud)

Ada*_*iss 28

原版的

这取决于哈希值的作用.如果只是将文档向下移动到#a1,则只需scrollTop在文档加载后设置为0即可.

编辑

查看其他stackoverflow问题,

parent.location.hash = ''
Run Code Online (Sandbox Code Playgroud)

应该这样做,但可能重新加载页面(你必须测试它)

除此之外,我建议你在AJAX调用期间/之前处理它 - 即

if (hash != 'a1'){ doAjax(); } //pseudocode obviously.
Run Code Online (Sandbox Code Playgroud)

使用基于发布代码的代码编辑2

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

var $tabValue = $(this).attr('href');
var $withoutHash = $tabValue.substr(0,$tabValue.indexOf('#'));
Run Code Online (Sandbox Code Playgroud)

我们基本上得到的href前第一#

  • 添加可能的解决方 (2认同)

Ste*_*hab 14

一个简单的window.location.hash=""意志就是这样.

  • 有了这个解决方案,一些浏览器会将哈希留在最后,有些则不会. (3认同)
  • 嗯..这让我留下mypage.htm#...我错过了什么?我想看看mypage.htm (2认同)

小智 8

这对于提出相同问题的人,如何在href中的#之后提取数据可能会有所帮助.

this.hash.slice(1);
Run Code Online (Sandbox Code Playgroud)

这将使#123为123.


编辑:我应该注意,如果你要从这些数据计算数字,最好使用parseInt(this.hash.slice(1));,否则你会得到时髦的结果.