jQuery удаляет хеш-значение из URL - PullRequest
17 голосов
/ 05 марта 2010

У меня есть жестко запрограммированный 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 ]

27 голосов
/ 05 марта 2010

оригинал

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

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

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

parent.location.hash = ''

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

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

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

редактировать 2 с кодом на основе размещенного кода

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

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

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

14 голосов
/ 13 декабря 2011

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

8 голосов
/ 01 марта 2012

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

this.hash.slice(1);

Это даст # 123 как 123.


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

...