добавление / удаление имени якоря из текущего url-адреса без обновления
Я хочу, чтобы событие on click добавляло / удаляло имя привязки "#on", добавляемое к текущему url без перезагрузки страницы, или использовало href= '#on' из ссылок, потому что это заставляет мою страницу прыгать
Например: http://www.example.com/page.html#on так что я могу получить обнаружение пользователей, которые приходят с этого url
и вызовите функцию On ()
function On()
{
//append to current url the anchor "#on"
}
function Off()
{
//remove from the current url the anchor "#on"
}
$('.on').live('click', function() {
On();
return false;
});
$('.off').live('click', function() {
Off();
return false;
});
2 ответов:
Вам действительно не нужен jQuery для этого, вы можете получить/установить имя якоря с помощью
location.hash. Если вы поместите его в функцию jQuery ready, вы можете выполнить некоторые действия, если он установлен в определенное значение:Обратите внимание, что при удалении хэша конечная строка$(function(){ // Remove the # from the hash, as different browsers may or may not include it var hash = location.hash.replace('#',''); if(hash != ''){ // Show the hash if it's set alert(hash); // Clear the hash in the URL location.hash = ''; } });#может оставаться в адресной строке. Если вы хотите реагировать на текущие изменения якоря, вы можете привязать обратный вызов к событиюhashchange:$(document).bind("hashchange", function(){ // Anchor has changed. });Если вы хотите предотвратить переход страницы к началу при снятии якоря, вы можете свяжите событие hashchange, чтобы вернуться в предыдущее положение прокрутки. Проверьте этот пример: http://jsfiddle.net/yVf7V/
var lastPos = 0; $('#on').click(function(){ location.hash = 'blah'; }); $('#off').click(function(){ lastPos = $(window).scrollTop(); location.hash = ''; }); $(window).bind('hashchange',function(event){ var hash = location.hash.replace('#',''); if(hash == '') $(window).scrollTop(lastPos); alert(hash); });
Если вы используете jquery попробуйте этот код
$("a[href^=#]").on("click", function(e) { e.preventDefault(); history.pushState({}, "", this.href); });
Comments