Задача в том чтобы когда пользователь в первый раз выбрал элементы, затем когда в следующий раз он заходит на страницу те элементы которые он выбирал были уже отмеченные, я так понимаю что мне нужно после нажатия на save
найти все активные элементы и сохранить их в объект а затем я их передам на backend
, как правильно это сделать? Записать в объект элементы?
$(".elem").click(function() {
$(this).toggleClass("active");
});
.elem {
width: 100px;
height: 100px;
background: yellow;
margin-bottom: 10px;
}
.elem.active {
background: red;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="elem" data-elem="1"></div>
<div class="elem" data-elem="2"></div>
<div class="elem" data-elem="3"></div>
<div class="elem" data-elem="4"></div>
<div class="elem" data-elem="5"></div>
<button class="save">save</button>
Можно создать булевый массив, в котором будет храниться, активен ли соответствующий элемент или нет. Массив можно, например, преобразовать в json (JSON.stringify
), получится строка, которую уже можно передать на сервер.
$(".elem").click(function() {
$(this).toggleClass("active");
});
$('.save').click(function() {
let array = $('.elem').toArray().map(element => $(element).hasClass('active'));
// вот этот массив отправляете на сервер
// для примера выведем его
console.log(array);
});
$('.restore').click(function() {
// получаем массив с сервера, например такой:
let array = [false, false, true, false, true];
let elements = $('.elem');
array.forEach((isActive, i) => elements.eq(i).toggleClass('active', isActive));
});
.elem {
width: 70px;
height: 70px;
background: yellow;
margin-top: 10px;
display: inline-block;
}
.elem.active {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="save">save</button>
<button class="restore">restore</button>
<div>
<div class="elem" data-elem="1"></div>
<div class="elem" data-elem="2"></div>
<div class="elem" data-elem="3"></div>
<div class="elem" data-elem="4"></div>
<div class="elem" data-elem="5"></div>
</div>
let elements = '[1, 3, 4]'; // полученная с сервера строка
elements = JSON.parse(elements); // преобразовываем ее в массив
console.log(elements); // полученный массив
elements.forEach(function(elem) { // перебираем полученный массив
$('.elem[data-elem="' + elem + '"]').addClass('active'); // и отмечаем элементы согласно значениям из массива
});
$('#save').on('click', function() {
elements = []; // очищаем массив
$('.elem.active').each(function() { // для каждого выделенного элемента
elements.push($(this).attr('data-elem')); // добавляем в массив его data-elem
});
elements = JSON.stringify(elements); // преобразовываем в строку
console.log(elements); // полученная строка
});
$(".elem").click(function() {
$(this).toggleClass("active");
});
/* Убрать выделение */
$('#reset').on('click', function() {
$('.elem').removeClass('active');
});
.block:after {
content: '';
display: block;
clear: both;
}
.elem {
width: 100px;
height: 100px;
background: yellow;
margin: 0 10px 10px 0;
float: left;
}
.elem.active {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block">
<div class="elem" data-elem="1"></div>
<div class="elem" data-elem="2"></div>
<div class="elem" data-elem="3"></div>
<div class="elem" data-elem="4"></div>
<div class="elem" data-elem="5"></div>
</div>
<button id="save">Save</button>
<button id="reset">Reset</button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Нужно получить массив элементов с классом
При нажатий на блок открывается его dropdownВсего блоков 12, соответственно 12 dropdown
Есть два input, если в оба инпута ввели правильные данные допустим в первый input "123", а во второй input "123ABC" и если все правильно, показать модульное...
В форме обратной связи есть возможность прикреплять к письму файлы