jQuery – запустить URL-адрес в том же окне, затем обновить

StackOverflow https://stackoverflow.com/questions/3991398

  •  10-10-2019
  •  | 
  •  

Вопрос

Я использую плагин аккордеона 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

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

$('.lvl2 a').click(function() {
    location.href=$(this).attr('rel');
    setTimeout(function() {
        location.reload();
    },1000);
});

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top