Удалить хэштег (#) из URL

Я хочу, чтобы хэш-теги удалялись из URL после их использования. Например, когда я нажимаю на ссылку ниже:

<a href="#btnq1"><button type="button" name="" value="" id="btnq1">Just a button</button></a>

Я хочу, чтобы хэш-тег #btnq1, который отображается в URL-адресе страницы, удалялся сразу после того, как происходит действие по этой ссылке. Я безуспешно пробовал приведенный ниже код jquery:

$('#btnq1').click(function(event){
   event.preventDefault();
   // your action
});

И даже если это сработает, то как мне реализовать его для работы с каждым хэш-тегом, добавленным в URL-адрес? Я хотел бы решить это с помощью javascript.


person Dchris    schedule 26.04.2014    source источник
comment
возможный дубликат: stackoverflow.com/questions/10026223/removing-hash-from -URL   -  person VF_    schedule 26.04.2014
comment
я взял неправильный вопрос.   -  person Zafar    schedule 26.04.2014
comment
@user3348022 user3348022 Я не вижу решения для вашего возможного дубликата .. Я был бы рад, если бы вы могли показать мне ..   -  person Dchris    schedule 26.04.2014
comment
Зачем тебе там ссылка? Это недопустимо, сломает что-то в некоторых браузерах, и вы привязываете событие click к кнопке.   -  person Quentin    schedule 26.04.2014
comment
Наличие кнопки внутри якоря. validator.w3.org — полезный инструмент.   -  person Quentin    schedule 26.04.2014
comment
Нет, это не так. HTML 5 прямо запрещает это.   -  person Quentin    schedule 26.04.2014
comment
Модель содержимого: прозрачная, но не должно быть потомков интерактивного содержимого. — w3.org/TR/html5/text -level-semantics.html#the-a-element (кнопка, предназначенная для нажатия, представляет собой интерактивный контент)   -  person Quentin    schedule 26.04.2014


Ответы (2)


Вы можете попробовать это:

$(window).on('hashchange', function(e){
    history.replaceState ("", document.title, e.originalEvent.oldURL);
});
person A. Wolff    schedule 26.04.2014

сначала добавьте класс в свой тег, для которого вы хотите такое поведение, или атрибут данных html 5. Тогда ваша ссылка становится;

<a href="#btnq1" class="remove-hash"><button>Button</button></a>

$('body').on('click', ".remove-hash", function(e){
    $(this).removeAttr('href');
});
person Honorable Chow    schedule 26.04.2014
comment
когда должно срабатывать вышеперечисленное? при загрузке страницы? я пытался, но это не работает. - person Dchris; 26.04.2014
comment
. отсутствовал в .remove-hash. - person Honorable Chow; 27.04.2014
comment
Это хорошее решение. Работайте с любым элементом ID или Class. - person Jornes; 06.03.2020