добавление / удаление имени якоря из текущего 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;
});
807   2  

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

    Ничего не найдено.