Как я могу заблокировать jquery.address от изменения URL в определенных ситуациях - PullRequest
1 голос
/ 11 июля 2011

Я использую jquery.address, плагин для создания истории браузера, когда у меня тяжелый веб-сайт на ajax. хотя в определенной ситуации, когда ссылка запускает функции $ .address.change (), ее следует заблокировать.

например, при наличии навигации, где 1 элемент - текущая страница, я бы предпочел, чтобы он не перезагружал текущую страницу, а блокировал событие изменения.

в функции $ .address.change () я, конечно, могу проверить, является ли это текущей страницей, и просто вернуться, но я все равно вижу адрес в адресной строке браузера.

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

так, если у кого-нибудь есть идея, как заблокировать jquery.address от изменения URL-адреса, например, когда там есть ссылка с классом 'current'?

С наилучшими пожеланиями Sander Houttekier

1 Ответ

1 голос
/ 12 июля 2011

Я бы использовал обработчик щелчков для ссылок вместе с переменной отслеживания состояния m_page или m_currentFoo и т. Д., А затем поместил бы оператор if, проверяющий, соответствует ли ссылка текущему состоянию перед изменением адреса.

Вот первый пример кода с их страницы API:

$.address.change(function(event) {
    // do something depending on the event.value property, e.g.
    // $('#content').load(event.value + '.xml');
});
$('a').click(function() {
    $.address.value($(this).attr('href'));
});

А вот некоторые модификации:

//This is called when the address is changed due to navigation.
$.address.change(function(event) {
    // do something depending on the event.value property, e.g.
    // $('#content').load(event.value + '.xml');
});

//This is your click handler
$('a').click(function() {
    //Do any logic for choosing what happens with the address here.
    if(moon = newMoon) {
        $.address.value($(this).attr('href'));
    }
});
...