Повторяющиеся медиа-запросы в jQuery

339
30 сентября 2017, 22:17

Есть скрипт, который выполняется при разрешении окна 992px и меньше. Но дело в том, что, например, если разрешение окна 1200, а затем мы сжали браузер до 900, то этот скрипт не выполнится, нужно перезагружать страницу.

Как сделать так, чтобы проверка делалась постоянно (например как в медиа-запросах CSS)? То есть, чтобы можно было сжимать-разжимать страницу и скрипт постоянно выполнялся

Скрипт:

    jQuery(document).ready(function() {
    if (window.matchMedia('(max-width: 992px)').matches) {
        if (location.pathname == '/') {
            jQuery('.page-content').css('display', 'none');
        }
        if (location.pathname == '/catalog/') {
            jQuery('.page-content, #description_catalog').insertAfter('.bx_catalog_tile');
        }
    }
})
Answer 1

Вынесите всю проверку в отдельную функцию и вызывайте ее как при открытии страницы, так и при ресайзе окна:

$(document).ready(function() {
  checkMedia(); // запускаем при открытии страницы
  $(window).on('resize', function() { // запускаем при каждом ресайзе окна
    checkMedia();
  });
  function checkMedia() {
    if (window.matchMedia('(max-width: 992px)').matches) {
      if (location.pathname == '/') {
        jQuery('.page-content').css('display', 'none');
      }
      if (location.pathname == '/catalog/') {
        jQuery('.page-content, #description_catalog').insertAfter('.bx_catalog_tile');
      }
    }
  }
});
READ ALSO
Как переписать методы jQuery?

Как переписать методы jQuery?

У jQuery есть методы text и html, которые оперируют с DOM, но не проверяют что значения одинаковыеИ записывают в DOM то же самое

308
jquery подставить нужные значения

jquery подставить нужные значения

нужно значение s td_art nomob подставить в ссылку href="/search/?find= " (где стоит равенство)

284
Пронумеровать список

Пронумеровать список

Есть список и нужно его пронумероватьПод пронумеровать подразумевается добавление классов: во 2 уровне ul, например, сlass_2, в 3 уровне ul - сlass_3

323