jQuery и локальное хранилище: селектор с несколькими состояниями

0

В настоящее время я работаю над раскрывающимся списком для изменения шрифтов на сайте. В настоящее время в раскрывающемся списке есть несколько разных шрифтов. Код, который вызывается при нажатии одной из раскрывающихся разделов, выглядит следующим образом:

jQuery(function($) {
if ( localStorage.getItem('font-01') ) {
    $('#font-css-01').prop('disabled', localStorage.getItem('font-01') == 'true');
}

$('#font-selector-01').on('click', function() {
    $('#font-css-01').prop('disabled', function(_, prop) {
        localStorage.setItem('font-01', !prop);
        return !prop;
    });
});
});

Теперь этот скрипт повторяется для каждого параметра шрифта (очевидно, только с окончательными номерами). Тем не менее, мне нужен сценарий, чтобы отключить любые предыдущие варианты шрифтов, когда вы разрешаете новый выбор шрифта; в настоящее время неожиданное поведение может возникнуть, когда пользователь выбирает шрифт, отличный от стандартного, и затем выбирает другой шрифт, отличный от стандартного (например, выбирает font-01, затем выбирает font-02). В сущности, я не уверен, как начать расширять этот скрипт, чтобы он сбрасывал предыдущие варианты перед применением новых вариантов.

Функция .prop() предназначена для идентификаторов стилей для разных шрифтов, а выпадающие подэлементы помечены последовательно #font-selector-01 через $font-selector-n.

Теги:
fonts
local-storage
prop

1 ответ

1
Лучший ответ

Для тегов link используйте data-fid вместо id:

<link data-fid='01' href='...' rel='...' disabled>
<link data-fid='02' href='...' rel='...' disabled>

Как вы можете видеть, они должны быть отключены по умолчанию.
Добавьте класс font-selector-c и атрибут data-fid='xx' для каждого li. Затем код:

$('.font-selector-c').on('click', function() {
    var fid = $(this).data('fid')
    $('link[data-fid]').prop('disabled', true) // disable all the stylesheets
    $('link[data-fid="' + fid + '"]')
        .prop('disabled', false) // enable one needed
    localStorage.setItem('font', fid) // save the id of the selected
});
$('#font-selector-reset').on('click', function() {
    $('link[data-id]').prop('disabled', true) // disable all the stylesheets
    localStorage.setItem('font', null) // remove saved id
});

// On start: recalling user choice
var c_fid = localStorage.getItem('font')
if (c_fid)
    $('link[data-fid="' + c_fid + '"]').prop('disabled', false)
  • 0
    Кажется, это не сработало. Вот ссылка на HTML- код, с которым я сейчас работаю (включая ссылки на все скрипты): zyniker13.com/html-pages/… . Как вы, вероятно, можете сказать, я пытаюсь, чтобы раскрывающийся список в верхней части страницы действовал как селектор шрифтов (с помощью кнопки сброса по умолчанию).
  • 0
    @Zyniker Что именно должно произойти? Что, по вашему мнению, делает prop disabled ?
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню