|
26.02.2018, 13:28
|
Аспирант
|
|
Регистрация: 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">1</div><div></div>
<div class="fn_switch">2</div><div></div>
<div class="fn_switch">3</div><div></div>
<div class="fn_switch">4</div><div></div>
<div class="fn_switch">5</div><div></div>
<div class="fn_switch">6</div><div></div>
<div class="fn_switch">7</div><div></div>
<script>
$(function(){
var adr = document.location.pathname; // станица
$('.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 i;
});
localStorage.setItem(adr, JSON.stringify(arr));
});
var arr = JSON.parse(localStorage.getItem(adr));
if(arr){
$('.fn_switch').filter(function(i){
return arr.includes(i);
}).addClass('active').next().show();
}
});
</script>
</body>
</html>
должно сработать
|
Все бы хорошо, но у меня движок генерирует дополнительные адресса страниц, и выходит что при выборе определенных с-в меняется адресс странички, а вот все таки как заставить работать по допустим data-name="value"?
<div class="fn_switch" data-name="12">1</div><div></div>
<div class="fn_switch" data-name="17">2</div><div></div>
<div class="fn_switch" data-name="32">3</div><div></div>
<div class="fn_switch" data-name="15">4</div><div></div>
<div class="fn_switch" data-name="99">5</div><div></div>
<div class="fn_switch" data-name="120">6</div><div></div>
<div class="fn_switch" data-name="112">7</div><div></div>
Последний раз редактировалось wisma, 26.02.2018 в 13:37.
|
|
26.02.2018, 15:07
|
Аспирант
|
|
Регистрация: 10.02.2014
Сообщений: 32
|
|
Или допустим по
<div class="fn_switch" id="12">1</div><div></div>
2
<div class="fn_switch" id="17">2</div><div></div>
3
<div class="fn_switch" id="32">3</div><div></div>
4
<div class="fn_switch" id="15">4</div><div></div>
5
<div class="fn_switch" id="99">5</div><div></div>
6
<div class="fn_switch" id="120">6</div><div></div>
7
<div class="fn_switch" id="112">7</div><div></div>
я могу генерировать любое уникальное число....
Ну я про то что после class="fn_switch" записывать что-то и это запоминать и выводить...
Последний раз редактировалось wisma, 26.02.2018 в 15:40.
|
|
26.02.2018, 19:08
|
Аспирант
|
|
Регистрация: 10.02.2014
Сообщений: 32
|
|
up
|
|
26.02.2018, 19:38
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
решение как вы хотите конечно же есть, но для этого id или какой то иной тег должен быть уникальный на всем сайте, а не только на странице..
все тоже самое только надо будет запоминать все идентификаторы с классом active.
|
|
26.02.2018, 19:42
|
Аспирант
|
|
Регистрация: 10.02.2014
Сообщений: 32
|
|
Сообщение от j0hnik
|
решение как вы хотите конечно же есть, но для этого id или какой то иной тег должен быть уникальный на всем сайте, а не только на странице..
все тоже самое только надо будет запоминать все идентификаторы с классом active.
|
А как это реализировать? Уникальный айди генерируется для всего сайта.
Я js вообще не понимаю
|
|
26.02.2018, 19:44
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
id будет или data-name?
|
|
26.02.2018, 19:45
|
Аспирант
|
|
Регистрация: 10.02.2014
Сообщений: 32
|
|
Сообщение от j0hnik
|
id будет или data-name?
|
лучше я думаю data-name
|
|
26.02.2018, 19:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
localStorage запоминание кликнутых элементов
wisma,
<!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="12">1</div><div></div>
<div class="fn_switch" data-name="17">2</div><div></div>
<div class="fn_switch" data-name="32">3</div><div></div>
<div class="fn_switch" data-name="15">4</div><div></div>
<div class="fn_switch" data-name="99">5</div><div></div>
<div class="fn_switch" data-name="120">6</div><div></div>
<div class="fn_switch" data-name="112">7</div><div></div>
<script>
$(function() {
var obj = JSON.parse(localStorage.getItem("obj") || "{}");
$(".fn_switch").each(function(indx, el) {
var num = $(el).data("name");
$(el).click(function(e) {
e.preventDefault();
$(el).toggleClass("active").next().slideToggle(300);
obj[num] = $(el).hasClass("active");
localStorage.setItem("obj", JSON.stringify(obj));
});
obj[num] && $(el).addClass("active").next().slideDown();
});
});
</script>
</body>
</html>
Последний раз редактировалось рони, 26.02.2018 в 19:51.
|
|
26.02.2018, 19:53
|
|
Профессор
|
|
Регистрация: 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>
Последний раз редактировалось j0hnik, 26.02.2018 в 20:18.
|
|
26.02.2018, 20:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
j0hnik,
не работает ... возможно мои браузеры устарели
|
|
|
|