Подтвердить что ты не робот

Добавить/удалить имя привязки из текущего URL без обновления

Я хочу, чтобы в событии click было добавлено/удалено имя привязки "#on", которое должно быть добавлено к текущему URL-адресу без перезагрузки страницы, или используйте ссылку href= '# on' из ссылок, потому что это делает мой переход на страницу

Например: http://www.example.com/page.html#on, чтобы я мог обнаружить пользователей, которые пришли из этого URL-адреса и вызовите функцию Вкл.()

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;    
}); 
4b9b3361

Ответ 1

Вам не нужен jQuery для этого, вы можете получить/установить имя привязки с помощью location.hash. Если вы поместите его в свою готовую функцию jQuery, вы можете сделать какое-либо действие, если оно установлено на определенное значение:

$(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 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);
});

Ответ 2

если вы используете jquery, попробуйте этот код

$("a[href^=#]").on("click", function(e) {
    e.preventDefault();
    history.pushState({}, "", this.href);
});