Как показать div с определенным именем класса в цикле при перезагрузке страницы

#javascript #jquery

Вопрос:

Как я могу показать div с определенным именем класса=»показать», которые находятся в цикле при перезагрузке страницы. В приведенном ниже коде с помощью onclick я добавляю класс «показать» в div, у которого есть имя класса «оболочка» через jquery, и он генерирует класс как «показать оболочку» в div. Теперь я хочу, чтобы этот div lt;div class="wrapper show"gt;.....lt;divgt; отображался точно так же даже после перезагрузки страницы.

 lt;div id="data"gt;  lt;div class="wrapper" id="a"gt;AAAlt;/divgt;  lt;div class="wrapper" id="b"gt;BBBlt;/divgt;  lt;div class="wrapper" id="c"gt;CCClt;/divgt;  lt;div class="wrapper" id="d"gt;DDDlt;/divgt; lt;/divgt;  lt;div id="main"gt;  lt;a href="#a"gt;aaalt;/agt;  lt;a href="#b"gt;bbblt;/agt;  lt;a href="#c"gt;ccclt;/agt;  lt;a href="#d"gt;dddlt;/agt; lt;/divgt;  lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"gt;lt;/scriptgt;  lt;scriptgt;   jQuery(document).ready(function ($) {  $('.wrapper').hide();  $('a[href^="#"]').on('click', function (event) {  $('.wrapper').hide();  $('.wrapper').removeClass("show");  var target = $(this).attr('href');  $('.wrapper'   target).addClass("show");  $('.wrapper'   target).toggle();   });  });   function trigger() {  var data = sessionStorage.getItem('clicked');  if (data == 'true') {  var element = document.querySelectorAll("#load-data div");  for (var j = 0; j lt; element.length; j  ) {  if (element[j].className == "wrapper show") {  // this.className = ""wrapper show";  this.style.display = "block";  sessionStorage.setItem('clicked', true);  }  }  }  }   window.onload = function () {  var data = sessionStorage.getItem('clicked');  if (data == 'true') {  trigger();  }  }; lt;/scriptgt;  

Ответ №1:

Хранилище сеансов исчезает после перезагрузки страницы, для сохранения данных следует использовать локальное хранилище.

 lt;scriptgt;  jQuery(document).ready(function ($) {  $('.wrapper').hide();  $('a[href^="#"]').on('click', function (event) {  $('.wrapper').hide();  $('.wrapper').removeClass("show");  var target = $(this).attr('href');  $('.wrapper'   target).addClass("show");  $('.wrapper'   target).toggle();  localStorage.setItem('item-clicked', target);  });  // must be moved from window.onload because it has to wait for jQuery to be ready  var data = window.localStorage.getItem('item-clicked');  if (data != null) {  trigger();  }  });    function trigger() {  var data = window.localStorage.getItem('item-clicked');  console.log($(data))  $(data).addClass("show"); // adds the show class  $(data).toggle(); // toggles the class  }  lt;/scriptgt;  

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

1. долимайт, я просто упустил простую логику, не мог понять в течение нескольких часов. Спасибо! отлично работает