В настоящее время я работаю над раскрывающимся списком для изменения шрифтов на сайте. В настоящее время в раскрывающемся списке есть несколько разных шрифтов. Код, который вызывается при нажатии одной из раскрывающихся разделов, выглядит следующим образом:
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
.
Для тегов 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)
prop disabled
?