Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2016, 15:27
Аспирант
Отправить личное сообщение для Galyanov Посмотреть профиль Найти все сообщения от Galyanov
 
Регистрация: 23.01.2011
Сообщений: 47

localstorage - сохранять класс элемента
Здравствуйте!

Подскажите пожалуйста, как при перезагрузке страницы или при переходе на другую страницу сохранять у блока присвоенный класс через jquery?

Есть две кнопки, переключатели вида контента сетка/список.
При нажатии на них блоку #ajax-box присваиваются/удаляются классы .list и .grid

<button class="grid">Grid View</button>
<button class="list">List View</button>
		  
<div id="ajax-box" class="list">
------контент----------
</div>


(function($) {
    
        $('button').on('click',function(e) {
            if ($(this).hasClass('grid')) {
                $('#ajax-box').removeClass('list').addClass('grid');
            }
            else if($(this).hasClass('list')) {
                $('#ajax-box').removeClass('grid').addClass('list');
            }
        }); 
    })(jQuery);


По умолчанию стоит класс .list, но если выбрать вид сеткой - .grid, то при переходе на след. страницу сбрасывается обратно на .list

Читал про localstorage, но так и не смог сделать чтоб сохраняло выбранный стиль у блока.
В разных примерах по разному, где то объявляют переменную, где-то не объявляют... запутался вобщем совсем. Буду рад если кто подскажет как грамотно это организовать.

Последний раз редактировалось Galyanov, 27.05.2016 в 15:28. Причина: орфография
Ответить с цитированием
  #2 (permalink)  
Старый 30.05.2016, 11:37
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Судя по описанию это что то из разряда настроек.
Вообще такие вещи делаются с использованием серверного кода, где сохраняются выбранные пользователем настройки в таблице. И при загрузке страницы делается запрос к серверу, забираются настройки, применяются на фронте.

Касательно localstorage (можно так же использовать cookie) не знаю, что там такого сложного - создавай тестовый пример, посмотрим.
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2016, 16:36
Аспирант
Отправить личное сообщение для Galyanov Посмотреть профиль Найти все сообщения от Galyanov
 
Регистрация: 23.01.2011
Сообщений: 47

Вот тестовый пример сделал.
Если переключить на сетку и обновить страницу то сбрасывает на отображение списком.
Тестовый пример на jsfiddle
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2016, 17:38
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Galyanov,
(function($) {
        $(function(){
            var classView = localStorage.getItem('classView');
            !!classView && $('#ajax-box').removeClass().addClass(classView);

            $('button').on('click', function(e) {
                if ($(this).hasClass('grid')) {
                    $('#ajax-box').removeClass('list').addClass('grid');
                    localStorage.setItem('classView', 'grid');
                } else if ($(this).hasClass('list')) {
                    $('#ajax-box').removeClass('grid').addClass('list');
                    localStorage.setItem('classView', 'list');
                }
            });
        })
    })(jQuery);
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2016, 19:34
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

jQuery(function ($) {
	var ajaxBox = document.getElementById('ajax-box');

	if ( localStorage.class ) {
  		ajaxBox.className = localStorage.class;
  	}
  	
	$(':button.grid, :button.list').click(function (e) {
		localStorage.class = ajaxBox.className = e.target.className;
	});
});

Последний раз редактировалось dd_smol, 04.06.2016 в 19:52.
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2016, 19:38
Аспирант
Отправить личное сообщение для Galyanov Посмотреть профиль Найти все сообщения от Galyanov
 
Регистрация: 23.01.2011
Сообщений: 47

Работает) Спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить класс элемента в зависимости от разрешения экрана funfot (X)HTML/CSS 1 19.09.2014 20:15
вернуть второй класс элемента imedia Элементы интерфейса 4 06.09.2014 18:29
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
Скрипт при нахождение элемента добавляется класс, анимация Wahlberg Angular.js 0 02.02.2014 02:44
Получение id элемента, родитель которого динамически меняет класс Serzhik jQuery 12 12.08.2011 13:03