Я бы сделал это путем переключения класса и запоминания переключателя. Итак:
.btn-secondmenu.special-color {
background-color: gray;
}
тогда
var className = "special-color";
$(".btn-secondmenu").toggleClass(className, localStorage.getItem(".btn-secondmenu") === "Y");
$(".btn-secondmenu").click(function () {
var $this = $(this);
$this.toggleClass(className);
if ($this.hasClass(className)) {
localStorage.setItem(".btn-secondmenu", "Y");
} else {
localStorage.removeItem(".btn-secondmenu");
}
});
или
var className = "special-color";
$(".btn-secondmenu").toggleClass(className, localStorage.getItem(".btn-secondmenu") === "Y");
$(".btn-secondmenu").click(function () {
var $this = $(this);
$this.toggleClass(className);
localStorage.setItem(".btn-secondmenu", $this.hasClass(className) ? "Y" : "N");
});
в зависимости от того, хотите ли вы иметь локальный ключ хранения, если вы не установили специальный цвет.
Обновленная скрипка
Примечание: Ваш исходный код применяет один и тот же ключ локального хранилища ко всем элементам div при загрузке страницы, поэтому я оставил его таким. Если вы хотите, чтобы они переключались независимо, у вас есть несколько вариантов:
- Используйте отдельный ключ для каждого div или
- Используйте один ключ, содержащий флаги для div
Я предпочитаю иметь несколько записей в локальном хранилище, а не их много, поэтому я склоняюсь к последнему:
var className = "special-color";
var storageName = "colorToggleState";
var colorToggleState = JSON.parse(localStorage.getItem(storageName)) || {};
$(".btn-secondmenu").addClass(function() {
var $this = $(this);
var index = $this.index(); // Or use some other more reliable identification of the button
if (colorToggleState[index]) {
return className;
}
});
$(".btn-secondmenu").click(function () {
var $this = $(this);
var index = $this.index(); // Or use some other way of identifying the button
colorToggleState[index] = !colorToggleState[index]; // `undefined` is falsy, so this works just fine
$this.toggleClass(className, colorToggleState[index]);
localStorage.setItem(storageName, JSON.stringify(colorToggleState));
});
Fiddle