Обновите значение хеша в DOM, когда событие onchange запущено с использованием javascript / jquery - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть содержимое в виде списка с двумя вкладками и сетки.Содержимое содержит ссылки на страницы с хэш-значением #list или #grid в зависимости от представления с вкладками.По умолчанию #list.Когда представление с вкладками переключается на сетку, я хочу обновить значение хеш-функции в ссылках на нумерацию страниц с #list на #grid для якорей с именем класса '.pagehash'.Как мне это сделать с помощью javascript / jquery?Вот что у меня есть:

<a href="?{{ query }}&cfilters={{count}}&page={{ results.currentPage-1 }}#list" class="pagehash">&larr; Prev</a>

Javascript:

$('#view-tabs').on('change.zf.tabs', function() {
    $(".pagehash").attr('href').replace(/^.*?(#|$)/,location.hash); // doesn't work when tabs change from list -> grid
    console.log(location.hash); // works when tabs change fom list -> grid
});

Что я делаю не так?Любая помощь с благодарностью.Искал переполнение стека и гугл за ответ.Ничего не произошло.

1 Ответ

0 голосов
/ 20 ноября 2018

ОК, кажется, я сам на это ответилДобавлены комментарии в код, но в основном мы получаем текущее необработанное значение хеша без символа #, затем перебираем каждый экземпляр ссылок на страницы с классом .pagehash и заменяем текущий хеш новым хешем, когда представление переключается из списка ->сетка или сетка -> список:

<script>
$('#view-tabs').on('change.zf.tabs', function() {
    // Get the raw hash value
    var getHash = location.hash.split('#')[1];
    // For EACH link that has a class of pagehash replace current hash value with hash symbol and raw hash value
    $('.pagehash').each(function() {
        var getLink = $(this).attr('href').replace(/\#.*/, '#'+getHash);
        $(this).attr('href', getLink);
    });
});
</script>
...