Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 26.02.2018, 20:00
Аспирант
Отправить личное сообщение для wisma Посмотреть профиль Найти все сообщения от wisma
 
Регистрация: 10.02.2014
Сообщений: 32

Сообщение от j0hnik Посмотреть сообщение
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
	<style>
		.active{
			background-color: red;
		}
	</style>
</head>
<body>
	<div class="fn_switch" data-name="11">1</div><div></div>
	<div class="fn_switch" data-name="12">2</div><div></div>
	<div class="fn_switch" data-name="13">3</div><div></div>
	<div class="fn_switch" data-name="14">4</div><div></div>
	<div class="fn_switch" data-name="15">5</div><div></div>
	<div class="fn_switch" data-name="16">6</div><div></div>
	<div class="fn_switch" data-name="17">7</div><div></div>

	<script>
		$(function(){
			
			$('.fn_switch').click(function(e){

				e.preventDefault();

				$(this).next().slideToggle(300);


				if ($(this).hasClass('active')) {
					$(this).removeClass('active');
				}
				else {
					$(this).addClass('active');
				}

				var arr = $.map($('.fn_switch'), function(el, i){
					if($(el).hasClass('active')) return $(el).attr('data-name');
				});

				localStorage.setItem(adr, JSON.stringify(arr));
			});

			var arr = JSON.parse(localStorage.getItem(adr));
			if(arr){
				$('.fn_switch').filter(function(i){
					return arr.includes($(this).attr('data-name'));
				}).addClass('active').next().show();
			}	
		});

	</script>
</body>
</html>
Если кликнуть на самой странице - и обновить, все прекрасно запоминает, если перейти на другие страницы и там пооткрывать и позакрывать - все запоминает, а вот если в самом свойстве выбрать какой-то елемент то создается совершенно новая ссылка, и выходит что не запоминает....
Ответить с цитированием
  #22 (permalink)  
Старый 26.02.2018, 20:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

wisma,
не надо целиком копировать сообщения, 18 пост смотрели?
Ответить с цитированием
  #23 (permalink)  
Старый 26.02.2018, 20:06
Аспирант
Отправить личное сообщение для wisma Посмотреть профиль Найти все сообщения от wisma
 
Регистрация: 10.02.2014
Сообщений: 32

Сообщение от рони Посмотреть сообщение
wisma,
спасибо, запоминает и работает с любыми значениями. Да, первый раз попробывал, не заработало, потом увидел что вы обновили пост и перепроверил, спасибо еще раз.

Последний раз редактировалось wisma, 26.02.2018 в 20:09.
Ответить с цитированием
  #24 (permalink)  
Старый 26.02.2018, 20:18
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Это не браузер, а я

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
	<style>
		.active{
			background-color: red;
		}
	</style>
</head>
<body>
	<div class="fn_switch" data-name="11">1</div><div></div>
	<div class="fn_switch" data-name="12">2</div><div></div>
	<div class="fn_switch" data-name="13">3</div><div></div>
	<div class="fn_switch" data-name="14">4</div><div></div>
	<div class="fn_switch" data-name="15">5</div><div></div>
	<div class="fn_switch" data-name="16">6</div><div></div>
	<div class="fn_switch" data-name="17">7</div><div></div>

	<script>
		$(function(){
			
			$('.fn_switch').click(function(e){

				e.preventDefault();

				$(this).next().slideToggle(300);


				if ($(this).hasClass('active')) {
					$(this).removeClass('active');
				}
				else {
					$(this).addClass('active');
				}

				var arr = $.map($('.fn_switch'), function(el, i){
					if($(el).hasClass('active')) return $(el).attr('data-name');
				});

				localStorage.setItem('a', JSON.stringify(arr));
			});

				$('.fn_switch').filter(function(i){
					return 	JSON.parse(localStorage.getItem('a')).includes($(this).attr('data-name'));
				}).addClass('active').next().show();
		});

	</script>
</body>
</html>


	</script>
</body>
</html>
Ответить с цитированием
  #25 (permalink)  
Старый 28.02.2018, 23:34
Аспирант
Отправить личное сообщение для wisma Посмотреть профиль Найти все сообщения от wisma
 
Регистрация: 10.02.2014
Сообщений: 32

<div class="filter_group " style="display: block;">
                <-- первый вариант имеет постоянно включеную галочку везде по умолчанию -->
                <div class="filter_item ">
                                        <a class="filter_link checked" href="#">
                        <i class="filter_indicator"></i>
                        <span data-language="features_all">Все</span>
                    </a>
                </div>
      <-- остальные варианты проклациваются и в случае нажатия сохраняется выбор, он уже сохраняется в движке -->
                <div class="filter_item">
					 <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Acer</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Lenovo</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Huawei</span>
                        </a>
                    </div>
                            </div>

Подскажите пожалуйста, при таком условии что первый вариант в движке по дефолку включается, можно на автомате держать их закрытыми? Но если первый вариант не имеет свойства filter_link:checked то открывать меню? Точнее как, сейчас скрипт запоминает открытие, но если пользователь ничего не выбрал - он дальше этот блок держит открытым...

Последний раз редактировалось wisma, 28.02.2018 в 23:36.
Ответить с цитированием
  #26 (permalink)  
Старый 01.03.2018, 00:34
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

можно на css
.checked{
display:none
}
Ответить с цитированием
  #27 (permalink)  
Старый 01.03.2018, 00:38
Аспирант
Отправить личное сообщение для wisma Посмотреть профиль Найти все сообщения от wisma
 
Регистрация: 10.02.2014
Сообщений: 32

Сообщение от j0hnik Посмотреть сообщение
можно на css
.checked{
display:none
}
Тогда выйдет что при .checked на любом свойстве будет все закрыто, а нужно при filter_item:first .checked


.filter_item:first .checked {display:none;}
не помогло

Последний раз редактировалось wisma, 01.03.2018 в 00:42.
Ответить с цитированием
  #28 (permalink)  
Старый 01.03.2018, 00:43
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

если первого у блока с классом filter_item есть класс checked тогда скрывать, верно?
Ответить с цитированием
  #29 (permalink)  
Старый 01.03.2018, 00:55
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

[class="filter_item checked"]:first-of-type{
display: none;
}
Ответить с цитированием
  #30 (permalink)  
Старый 01.03.2018, 01:26
Аспирант
Отправить личное сообщение для wisma Посмотреть профиль Найти все сообщения от wisma
 
Регистрация: 10.02.2014
Сообщений: 32

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
	<style>
		.active{
			background-color: red;
		}
	</style>
</head>
<body>
	<div class="fn_switch" data-name="11">1</div>
<div class="filter_group " style="display: block;">
                <-- первый вариант имеет постоянно включеную галочку везде по умолчанию -->
                <div class="filter_item ">
                                        <a class="filter_link checked" href="#">
                        <i class="filter_indicator"></i>
                        <span data-language="features_all">Все</span>
                    </a>
                </div>
      <-- остальные варианты проклациваются и в случае нажатия сохраняется выбор, он уже сохраняется в движке -->
                <div class="filter_item">
					 <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Acer</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Lenovo</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Huawei</span>
                        </a>
                    </div>
                            </div>
	<div class="fn_switch" data-name="12">2</div>
<div class="filter_group " style="display: block;">
                <-- первый вариант имеет постоянно включеную галочку везде по умолчанию -->
                <div class="filter_item ">
                                        <a class="filter_link checked" href="#">
                        <i class="filter_indicator"></i>
                        <span data-language="features_all">Все</span>
                    </a>
                </div>
      <-- остальные варианты проклациваются и в случае нажатия сохраняется выбор, он уже сохраняется в движке -->
                <div class="filter_item">
					 <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Acer</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Lenovo</span>
                        </a>
                    </div>
                                    <div class="filter_item">
                                                <a class="filter_link" href="#">
                             <i class="filter_indicator"></i>
                            <span>Huawei</span>
                        </a>
                    </div>
                            </div>
	<div class="fn_switch" data-name="13">3</div><div>....</div>
	<div class="fn_switch" data-name="14">4</div><div>....</div>
	<div class="fn_switch" data-name="15">5</div><div></div>
	<div class="fn_switch" data-name="16">6</div><div></div>
	<div class="fn_switch" data-name="17">7</div><div></div>

	<script>
		$(function(){
			
			$('.fn_switch').click(function(e){

				e.preventDefault();

				$(this).next().slideToggle(300);


				if ($(this).hasClass('active')) {
					$(this).removeClass('active');
				}
				else {
					$(this).addClass('active');
				}

				var arr = $.map($('.fn_switch'), function(el, i){
					if($(el).hasClass('active')) return $(el).attr('data-name');
				});

				localStorage.setItem('a', JSON.stringify(arr));
			});

				$('.fn_switch').filter(function(i){
					return 	JSON.parse(localStorage.getItem('a')).includes($(this).attr('data-name'));
				}).addClass('active').next().show();
		});

	</script>
</body>
</html>


	</script>
</body>
</html>


я имел ввиду вот так... Скрипт же открывает блок, а в ксс я и так могу скрыть...

Сейчас он у нас открывает блок и запоминает то что открылось, но если пользователь ничего не выбрал - он дальше держит открытым блок, если зайти через энное время то блок будет открытым, но а как тогда его скрывать при выборе ВСЕ?
<span data-language="features_all">Все</span>




fn_switch > filter_group > filter_item > filter_link checked
.filter_group .filter_item .checked:first-of-type{
display: none;
}

Так он скрывает только надпись Все...

Последний раз редактировалось wisma, 01.03.2018 в 01:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
localstorage service script ExXxTaSy Общие вопросы Javascript 12 27.01.2017 12:49
Можно ли использовать значение из localstorage в PHP smart-create Events/DOM/Window 12 07.11.2016 02:54
LocalStorage удаление данных neon_tmn Общие вопросы Javascript 8 21.10.2016 15:22
Обход элементов localStorage berserk10 Events/DOM/Window 8 11.08.2013 14:55
Не сохраняется localStorage после перезагрузки браузера Бобр Firefox/Mozilla 1 20.10.2011 20:31