jQuery从URL中删除哈希值

时间:2010-03-05 10:10:14

标签: javascript jquery fragment-identifier

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

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>'));

        });

       }

    });

4 个答案:

答案 0 :(得分:27)

原始

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

修改

查看其他stackoverflow问题,

parent.location.hash = ''

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

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

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

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

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

var $tabValue = $(this).attr('href');
var $withoutHash = $tabValue.substr(0,$tabValue.indexOf('#'));

我们在第一次href

之前基本上得到了#

答案 1 :(得分:14)

一个简单的window.location.hash=""就可以了。

答案 2 :(得分:8)

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

this.hash.slice(1);

这将使#123为123。


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

答案 3 :(得分:1)

这对我有用。我添加了!以防止页面向上滚动。

window.location.hash="!";