#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 на основе проверенных фильтров