JQuery: удалить фрагмент URL при нажатии - PullRequest
1 голос
/ 27 июня 2011

У меня есть URL-адреса хэширования этого типа,

http://mysite.com/projects/#/article-1/
http://mysite.com/projects/#/article-2/
http://mysite.com/projects/#/article-2/

И я хочу удалить бит хеша (фрагмент), когда нажимаю на кнопку на странице, не перенаправляя страницу.

$('.back').click(function(){


    // remove the fragment.
    // don't know how to make it..
    return false;

});

Так что я могу получить только это,

http://mysite.com/projects/

Как я могу это сделать?

Спасибо.

EDIT: Как этот сайт делает это? Если вы нажмете закрыть проект на странице, загруженной ajax, например -

http://www.pentagram.com/work/#/all/all/newest/2534/

вы получите это обратно,

http://www.pentagram.com/work/#/all/all/newest/

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Краткий ответ:

window.location.hash = '';

Это оставит вас с трейлингом #.

1 голос
/ 27 июня 2011

Если я вас правильно понимаю, вы можете попытаться воспроизвести то, что обычно происходит, я имею в виду:

  • при нажатии кнопки, чтобы предотвратить действие по умолчанию
  • проанализировать ссылку, получить часть хэша
  • найти привязку на странице (координата y)
  • прокрутить до привязки

Примерно так:

$("a").click(function() {
    var loc = $(this).attr("href").split("#"),
        hash = loc[1] ? loc[1] : null;
    if (hash && $("a[name="+hash+"]").size() > 0)
    {
        var pos = $("a[name="+hash+"]").position();
        $(window).scrollTop(pos.top);
        return false;
    }
});

Таким образомURL остается прежним, но у вас есть функциональность.

0 голосов
/ 27 июня 2011

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

location.hash = '';
...