jQuery удаление хэш-значения из URL

У меня есть жестко закодированный 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>'));

        });

       }

    });

3 ответов


оригинал

это зависит от того, что хэш-значение. Если он просто перемещает документ вниз до #a1, вам просто нужно установить scrollTop до 0 после загрузки документа, вероятно.

редактировать

глядя на другие вопросы stackoverflow,

parent.location.hash = ''

должен делать это, но может быть перезагружает страницу (вы должны проверить это)

кроме этого, я советую вам обрабатывать его во время / до ваших вызовов AJAX-т. е.

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

Изменить 2 С код на выложили код

или, если вам просто нужно позвонить AJAX с url без хэш, вы можете удалить его в строке, которая вызывает jQuery, нет?

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

мы в основном получаем по href до первого #


простой window.location.hash="" сделает это.


Это может быть полезно для тех, кто задает тот же вопрос, как вытащить данные после # в href.

this.hash.slice(1);

это даст #123, а 123.


Edit: я должен, вероятно, отметить, если вы собираетесь вычислять числа из этих данных, лучше всего использовать parseInt(this.hash.slice(1)); или вы получите фанки результаты.