Добавить/удалить класс после клика И рефреш(в результате пост запроса) блоку кода?

$(document).ready(function() {
  if ($('.poisk').click(function()){
    $(window).on('load', function() {
      $('.all').addClass('box-80');
      $('.all-all').removeClass('box-80');
    });
  });
}); 

Что-то вроде таких действий хотелось бы реализовать. При клике на поиск отправляется пост запрос и соответственно обновляется страница. В этот момент как можно удалить/добавить классы? Принципиально именно при клике, т . к. при простом обновлении страницы скрипт срабатывает, но такой необходимости у меня нет. Заранее благодарю кто откликнется.


Ответы (1 шт):

Автор решения: DiD

В том виде, в котором вы хотите это получить - это невозможно. Когда вы выполняете submit формы, страница вместе со скриптом выгружаются из памяти и скрипт останавливает свою работу. При загрузке страницы будет выполняться новый скрипт, который не в курсе про то, что вы когда-либо что нажимали до этого.

Как вариант решения вашей проблемы могу предложить вам сохранить состояние через localStorage или cookie.

$(document).ready(function() {
  $('.poisk').click(function(){
    localStorage.setItem('action','search');
  });
  if(localStorage.getItem('action') == 'search'){
    $('.all').addClass('box-80');
    $('.all-all').removeClass('box-80');
  }
  localStorage.setItem('action','');
});

Либо, если не нравится так, можно например, сравнить referrer:

$(document).ready(function() {
  if(document.referrer == location.href){
    $('.all').addClass('box-80');
    $('.all-all').removeClass('box-80');
  }
});

Этот вариант не всегда работает и требует дополнительной калибровки.

Для начала я бы выводил:

console.log('referer=',document.referrer);
console.log('href=',location.href);
→ Ссылка