Несколько хэшей URL-адресов с помощью jQuery

#jquery #url

Вопрос:

У меня есть фильтр поиска, который использует флажки в качестве входных данных для фильтрации различных статей, имеющих разные или одинаковые категории ( семь, если быть точным) . Я хочу, чтобы пользователь мог отфильтровать контент, а затем поделиться этой сгенерированной ссылкой с кем-то другим, кто увидит отфильтрованные результаты. Проблема, с которой я сталкиваюсь, заключается в том, что, когда пользователь проверяет более одного фильтра, URL-адрес beacuse содержит только последний хэш. Можно ли добавить более одного хэша в URL-адрес, или мне следует сохранить все сгенерированные хэши в каком-то массиве, а затем просто сравнить эти значения с моим вторым кодом ниже?

Здесь я получаю хэш для каждого выбранного параметра фильтра:

 var elId = $(this).attr('id');
               

                if (elId != '') {
                    window.location.hash = elId ;
                }
 

Код для нажатия на каждый выбранный флажок, чтобы результаты фильтровались при вводе на страницу

  $(document).ready(function () {
        try {
            var urlHash = window.location.hash; 
            console.log(urlHash);
            urlHash = urlHash.replace("#", "");
            urlHash = urlHash.replace(" ", "");
            urlHash = urlHash.replace(" ", "");
            urlHash = urlHash.toLowerCase();
          
            if (urlHash == 'infrastructure') {
                $('#Infrastructure').click();
            }
            else if (urlHash == 'development') {
                $('#Development').click();
            }
           
            else if (urlHash == 'sharepoint') {
                $('#SharePoint').click();
            }
            else if (urlHash == 'office') {
                $('#Office').click();
            }
            else if (urlHash == 'sql') {
                $('#SQL').click();
            }
            else if (urlHash == 'azure') {
                $('#Azure').click();
            }
            else if (urlHash == 'other') {
                $('#Other').click();
            }
           

        }
        catch (err) { console.error(err); } 
 

Комментарии:

1. Вместо использования хэшей вы можете использовать параметры запроса. Это позволяет определить более одной переменной в URL-адресе. Документация: branch.io/glossary/query-parameters

2. Кроме того, почему вы проверяете urlHash на чем-то, чтобы заменить его точно таким же? Просто используйте Эли прямо сейчас?

3. Первый код находится внутри фильтра флажка .нажмите(функция (){ });, поэтому я не могу получить доступ к нему снаружи. Плюс ко всему, поскольку второй код находится вне функции click, я добиваюсь того, что код выполняется сразу после входа на страницу, так что статьи фильтруются в соответствии с заданным хэшем в URL. Нажмите .нажмите()

4. Что означает @Wimanicesir, так это изменить свой код на просто window.location.hash = elId

5. О да, я вижу это, обновлено. Спасибо. Все еще не разобрался в части добавления значений в URL-адрес, а затем разбиения его при загрузке страницы на значения X на основе проверенных фильтров