JQuery - запустить URL в том же окне, а затем обновить - PullRequest
1 голос
/ 22 октября 2010

Я использую плагин гармошки jQuery-UI с навигацией по хеш-тегам, но я столкнулся с проблемой.На каждой странице моего сайта есть виджет аккордеона.URL-адреса второго уровня моего главного меню навигации должны открывать правильную панель аккордеона, используя сопровождающий хэш-тег, и они написаны так:

<li class="lvl2"><a href="/thepage.jsp#panel-3">panel 3</a></li>

Проблема в том, что если вы 'Вы уже просматриваете одну панель любого из аккордеонов, пытаясь открыть другую панель с помощью навигации второго уровня, не работает.Он передает хеш-тег в адресную строку, но не открывает панель аккордеона, пока вы не обновите страницу.Поэтому я решил, что могу решить эту проблему, добавив jQuery, который заставит страницу обновляться через 500 миллисекунд, например так:

$('.lvl2 a').click(function() {
    setTimeout(function() {
        location.reload();
    },500);
});

За исключением того, что теперь саботирует навигацию от со страницына новую страницу и новую панель аккордеона.Это говорит о том, что ответом может быть полный контроль над всеми функциями навигации второго уровня и обработка с помощью jQuery.

Итак, как я могу изменить это, чтобы «сохранить» URL-адрес из атрибута hrefпривязать тег, передать его в браузер и затем обновить страницу?

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Я немного поигрался с этим и сумел заставить его работать, как мне кажется, последовательным образом.По сути, я изменил атрибуты href во всех тегах привязки lvl2 на атрибуты rel, а затем использовал этот атрибут в моей функции jQuery для обработки перехода к новому URL-адресу.Затем я увеличил время ожидания с 500 до 1000 миллисекунд.Кажется, все, что меньше, обновляет страницу слишком рано, прежде чем она получит шанс перейти на новый URL.

$('.lvl2 a').click(function() {
    location.href=$(this).attr('rel');
    setTimeout(function() {
        location.reload();
    },1000);
});
0 голосов
/ 22 октября 2010

Если lvl2 аккордеоны являются динамическими, вам может понадобиться использовать live или liveQuery вместо click.

...