Показывать активные элементы при загрузке страницы - Wookmark JS

Я использую Wookmark JS для отображения содержимого. Все хорошо, фильтрация работает хорошо, но я не слишком горяч на Jquery. Мне нужно загрузить относительные отфильтрованные элементы при переходе по определенной навигационной ссылке или странице

Вот ссылка на страницу с прототипом: http://cumminganderton.designnut.co.uk/projects.html

Как передать data-filter-class объектам, когда пользователь нажимает соответствующую ссылку в раскрывающемся меню или на домашней странице, поэтому, если я нажимаю "образование" в раскрывающемся меню, при загрузке страницы отображаются только элементы с класс данных отображения "образование"?

Я искал несколько дней, кажется, не могу найти решение... схожу с ума.

Надеюсь, кто-то может помочь.

ура

1 ответ

Если вы хотите, чтобы изменения, инициируемые Javascript, применялись к странице при перезагрузке или связывании, URL должен содержать что-то, что скажет Javascript применить фильтр при загрузке. hash расположения страницы является наиболее распространенным способом сделать это.

Я предлагаю вам немного разложить свой onClickFilter и измените хэш расположения страницы:

    var onClickFilter = function(event) {
      updateWithFilterElement($(event.currentTarget));
    }

    var updateWithFilterElement = function(item) {
      var activeFilters = [];

      if (!item.hasClass('active')) {
        filters.removeClass('active');
        location.hash = '';
      }
      item.toggleClass('active');

      // Filter by the currently selected filter
      if (item.hasClass('active')) {
        activeFilters.push(item.data('filter'));
        location.hash = item.data('filter');
      }

      handler.wookmarkInstance.filter(activeFilters);
    };

Теперь, когда пользователь щелкает фильтр, он сохраняется в URL для дальнейшего использования. После того, как вы загрузили изображения и настроили события мыши, вы можете добавить код для изменения фильтра, если у местоположения есть хеш:

if (location.hash != '') {
  updateWithFilterElement($("*[data-filter='" + location.hash + "']"));
}

Вы, вероятно, должны добавить некоторую проверку ошибок, чтобы убедиться, что такой элемент действительно существует, прежде чем пытаться фильтровать по нему.

Другие вопросы по тегам